関数型言語Part3
■ このスレッドは過去ログ倉庫に格納されています
0426デフォルトの名無しさん
NGNG>>420の式はそれぞれ
;; expand (let ((tmp #f)) (set! tmp (lambda (self) (self self))) (tmp tmp))
((lambda (tmp)
(set! tmp (lambda (self) (self self)))
(tmp tmp)) #f)
;; expand (let ((self #f)) (set! self (lambda () (self))) (self))
((lambda (self)
(set! self (lambda () (self)))
(self)) #f)
;; expand (letrec ((self (lambda () (self)))) (self))
((lambda (self)
(set! self (lambda () (self)))
(self)) #f)
と展開して、lambda(とset!)だけで表現できる。
(ただしこの展開方法が唯一というわけではない)
こんなこと最初は知る必要ないんだけど、ほとんどの構文が
より基本的な構文への構文糖衣(syntax-sugar)だと知ると
きっと面白くなるよって話。
そろそろスレ違いぎみか。
■ このスレッドは過去ログ倉庫に格納されています