From: Michael Pak
Subject: A Scheme -> CL conversion question.
Date:
Message-ID: <.658347415@boojum>
Hello there, gurus of Scheme AND Common Lisp.
How do you write the following Scheme code in Common Lisp:
------- cut here --------
(define (foo func)
(lambda (bar) (func (func (func bar))))))
((((foo foo) foo) 1+) 0) ;See the spoiler at the end to see what does
; this cute little thing return...
------- cut here -------
I have tried many ways to implement this in Common Lisp, but every time
it says that something else is wrong. I have just begun studying Common Lisp,
and this thing was the first I wanted to try.
Thanks a lot.
Misha.
Spoiler:
It returns 3^27.
In article <··········@boojum> ·····@BOOJUM.HUJI.AC.IL (Michael Pak) writes:
>Hello there, gurus of Scheme AND Common Lisp.
>
> How do you write the following Scheme code in Common Lisp:
>
>------- cut here --------
>(define (foo func)
> (lambda (bar) (func (func (func bar))))))
>
>((((foo foo) foo) 1+) 0) ;See the spoiler at the end to see what does
> ; this cute little thing return...
>------- cut here -------
(defun foo (func)
#'(lambda (bar)
(funcall func (funcall func (funcall func bar)))))
(funcall (funcall (funcall (foo #'foo) #'foo) #'1+) 0)
>I have tried many ways to implement this in Common Lisp, but every time
>it says that something else is wrong. I have just begun studying Common Lisp,
>and this thing was the first I wanted to try.
>
This is good example of an program which can be expressed more
compactly in Scheme than in Common Lisp.
Tim Moore ·····@cs.utah.edu {bellcore,hplabs}!utah-cs!moore
"Ah, youth. Ah, statute of limitations."
-John Waters