Expressões no LISP de 1960
Funções que quando se têm como argumento dão-se como resultado no LISP de John McCarthy
Já anteriormente tinha construído alguns exemplos de funções "meio esquisitas", que quando se têm como argumento dão-se como resultado. Vejamos então, usando o LISP de 1960 de John McCarthy (JMC), os mesmos exemplos:
1. Função identidade, (f f) dá f.
> (eval. '((label ident (lambda (x) x))
y)
'((y ident)))
ident
ou
> (eval. '((lambda (x) x) '((lambda (x) x))) '()) ((lambda (x) x))
2. função diag definida por (label diag (lambda (x) (list x (list 'quote x))))
2.1 aplicada a 'list
> (eval. '(
(label diag (lambda (x) (list x (list 'quote x))))
y)
'((y list)))
(list (quote list))
e
> (eval.
(eval. '(
(label diag (lambda (x) (list x (list 'quote x))))
y)
'((y list))) '())
(list)
2.2 (diag 'diag)
> (eval. '((label diag (lambda (x) (list x (list 'quote x))))
y)
'((y diag)))
(diag (quote diag))
ou ainda
> (eval. (eval. '((label diag (lambda (x) (list x (list 'quote x)))) diag) '()) '()) ((label diag (lambda (x) (list x (list (quote quote) x)))) (quote (label diag (lambda (x) (list x (list (quote quote) x))))))e, ainda ainda,
> (eval. (eval. '((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x)))) '()) '()) ((lambda (x) (list x (list (quote quote) x))) (quote (lambda (x) (list x (list (quote quote) x)))))
E um exemplo extra do artigo original do JMC
> (eval. '((label ff (lambda (x) (cond ((atom x) x) ('t (ff (car x)))))) y) '((y ((a b) (c d))))) aPalavras chave: LISP, John McCarthy
Última actualização/Last updated: 2012-02-26 [15:49]
1999-2011 (c) Tiago Charters de Azevedo
São permitidas cópias textuais parciais/integrais em qualquer meio com/sem alterações desde que se mantenha este aviso.
Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.
