Gmail Календар Документи Фотознімки Веб Ще »
Групи, які ви переглядали нещодавно | Довідка | Увійти
Головна сторінка Груп Google
Допис з розмови Recursive lambda
Група, до якої ви додаєте допис, - група Usenet. Відтак, будь-хто в Інтернеті бачитиме вашу електронну адресу.
Вашу відповідь не було надіслано.
Ваш допис надіслано
 
Від:
Кому:
Копія:
Продолжить:
Додати копію: | Додати продовження: | Редагувати тему
Тема:
Підтвердження:
З метою підтвердження введіть символи, наведені на зображенні нижче, або числа, які чуєте, натиснувши значок доступу. Прослухайте і введіть цифри, що чуєте
 
Ingvar Mattsson  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 6 Лип 2001, 16:45
Групи новин: comp.lang.lisp
Від: Ingvar Mattsson <ing...@bofh.se>
Дата: 06 Jul 2001 14:43:36 +0100
Місцевий час: Пт 6 Лип 2001 16:43
Тема: Re: Recursive lambda
Kalle Olavi Niemitalo <k...@iki.fi> writes:

> "Piotr Kuchta" <pi...@itam.zabrze.pl> writes:

> > Just curious: is it possible for a lambda (unnamed) function to call itself?

> You could give the function to itself as a parameter.
> Although then it isn't really unnamed any more...

>   (let ((unnamed (lambda (me obj)
>               (if (atom obj)
>                   obj
>                 (cons (funcall me me (cdr obj))
>                       (funcall me me (car obj)))))))
>     (funcall unnamed unnamed '(a b c)))

> I'm not aware of a syntax for getting the innermost enclosing function.
> I'd be surprised if there was one, as LET is almost a LAMBDA too.
> &WHOLE arguments spring to mind, but IIRC those are for macros only.

Or use Ugly Macros. I have (once or twice) used something along the
lines of:
(defmacro fakelambda (args &body body)
 `(lambda ,args (labels ((me ,args ,@body)) (me ,@args))))

This lets you get to call "the unnamed lambda" as ME within its body.

//Ingvar
--
When C++ is your hammer, everything looks like a thumb
        Latest seen from Steven M. Haflich, in c.l.l


    Переслати  
Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.

Створити групу - Групи Google - Домашня сторінка Google - Правила користування послугою - Заява про конфіденційність і нерозголошення інформації
©2010 Google