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)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)))))

a
Palavras chave/keywords: LISP, John McCarthy

Criado/Created: NaN

Última actualização/Last updated: 10-10-2022 [14:26]


Voltar à página inicial.


GNU/Emacs Creative Commons License

(c) Tiago Charters de Azevedo