> 1 <

Автор Сообщение

Tymvie

Members


Статус

4 сообщений

Где: Russia
Род занятий:
Возраст:

#4374   2011-05-25 15:26 GMT+3 часа(ов)      
Здравствуйте
Помогите разобраться в задаче

Задание: определить функцию, возвращающую в качестве своего значения форму своего определения (DEFUN).
Решение из книги "Мир Лиспа":
(defun self nil(
(lambda (x)(list 'defun 'self nil(list x (list 'quote x))))
'(lambda (x)(list 'defun 'self nil(list x (list 'quote x))))))

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 29

#4376   2011-05-25 15:48 GMT+3 часа(ов)      
Не понятно, что объяснять. Спрашивай, что именно неясно.
Вообще, вот самый простой вариант на CL, но он более хакерский, неканоничный:
#1=(defun quine () '#1#)
(let ((*print-circle* t))
(print (quine)) ())
=> #1=(defun quine () '#1#)

Tymvie

Members


Статус

4 сообщений

Где: Russia
Род занятий:
Возраст:

#4377   2011-05-25 15:51 GMT+3 часа(ов)      
Не понятно что происходит в данном коде...

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 29

#4378   2011-05-25 16:14 GMT+3 часа(ов)      
Вообще ничего непонятно? Ни что такое defun, ни lambda, ни как
вычисляются составные формы, у которых голова - лямбда-абстракция?
Ну тогда рекомендую почитать книгу `Мир Лиспа`.

Tymvie

Members


Статус

4 сообщений

Где: Russia
Род занятий:
Возраст:

#4379   2011-05-25 16:17 GMT+3 часа(ов)      
Мир Лиспа читал, defun, lambda и т.д. понятны. А вот выше не понятен

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 29

#4381   2011-05-25 16:51 GMT+3 часа(ов)      
А это:
> как вычисляются составные формы, у которых голова - лямбда-абстракция
Может быть что-то из этого вызывает трудности?:
(funcall (lambda (x) (1+ x)) 4)
=> 5
((lambda (x) (1+ x)) 4)
=> 5
((lambda (x) (list 1 x 3)) 2)
=> (1 2 3)
((lambda (x) (list 'defun 'self () x)) '(someting))
=> (defun self () (something))

Tymvie

Members


Статус

4 сообщений

Где: Russia
Род занятий:
Возраст:

#4385   2011-05-26 15:51 GMT+3 часа(ов)      
ander-skirnir, разрбрался, спасибо, все бы так объясняли :-)
> 1 <


Онлайн :

0 пользователь(ей), 38 гость(ей) :