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!!

いけぇ!!僕のSchemeよ!!

debug> (eval func)
6

でたぁ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜関数!!

(らしきもの)

では、変数を変えて、

eval!!

debug> (define a 10)
10
debug> (eval func)
15

関数だよ関数!!

(らしきもの)

じゃあ、これができるはず。

ふふ。

debug> (define func '(eval func))
(eval func)

いけぇ!!eval!!

debug> (eval func)

無限ループきたぁ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(無限ループで喜ぶ人


リストを実行しちゃえばいいじゃないかというLispの原点に触れることができた気がします。


僕でもやればできるんだなぁ。