Schemeをつくろう(12) 関数らしきもの
実験がうまくいってきたので、Lispの原点を目指してみます。
まずは変数登録
変数を登録しておこう。
debug> (define a 1) 1 debug> (define b 2) 2 debug> (define c 3) 3
環境に変数a,b,cが登録されました。
そういえばクオートがあった
クオートしておいてっと。
debug> (define func '(+ a b c)) (+ a b c)
リストが変数に入ります。単なるリストですよ。
では、変数を変えて、
eval!!
debug> (define a 10) 10 debug> (eval func) 15
関数だよ関数!!
(らしきもの)
じゃあ、これができるはず。
ふふ。
debug> (define func '(eval func)) (eval func)
いけぇ!!eval!!
debug> (eval func)
無限ループきたぁ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(無限ループで喜ぶ人
リストを実行しちゃえばいいじゃないかというLispの原点に触れることができた気がします。
僕でもやればできるんだなぁ。