Berry's paradox and elegant LISP programs
in Common Lisp
Giro!
(defun s-expressin-length (s) (length (write-to-string s))) (defun complexity (s) (s-expressin-length (eval s))) (complexity '(car '(a b))) (defun is-elegant (s) (cond ((eq (s-expressin-length s) (complexity s)) t) (t nil))) (defun berry1 (lst) (cond ((null lst) nil) (t (cond ((and (is-elegant lst) (>= (complexity lst) (s-expressin-length #'berry1))) #'berry1) (t lst))))) (defun berry (lst) (cond ((null lst) nil) (t (cond ((and (is-elegant (car lst)) (>= (complexity (car lst)) (s-expressin-length #'berry)))) #'berry) (t (berry (cdr lst))))))
Alguns extras úteis que tinha para aqui.
As notas aqui descritas estão pensadas para SBCL - Steel Bank Common Lisp em Debian - GNU/Linux.
- Pedir a CL para não gritar (inlcuir a instrução no ficheiro
~/.sbclrc)
:
(setf *print-case* :downcase)
- A maneira mais simples de instalar e manter os packages em CL é usando o
ASDF. Há dois manuais que valem a pena ser lidos:
- ASDF Manual
- e o
asdf-install
: ASDF-Install - Bringing Lisp Libraries to you ou ainda CLiki - ASDF-Install
- Exemplo de instalação usando o asdf: Para instalar a LTK - The Lisp Toolkit faz-se:
(require 'asdf-install) (asdf-install:install 'ltk)O asdf faz o download dos ficheiros e diz
Downloading 240780 bytes from http://www.peter-herth.de/ltk/ltk-0.91.tgz ...e pergunta:
Install where? 1) System-wide install: System in /usr/lib/sbcl/site-systems/ Files in /usr/lib/sbcl/site/ 2) Personal installation: System in /home/tca/.sbcl/systems/ Files in /home/tca/.sbcl/site/respondo
2
.
Palavras chave/keywords: LISP, Berry paradox
Criado/Created: 18-05-2018 [10:15]
Última actualização/Last updated: 10-10-2022 [14:25]
(c) Tiago Charters de Azevedo