lisp on yarv製作日誌9

作り始めて一月ぐらいたつのですが、肝心なcarとかcdrなどのリスト処理に関する関数を作っていなかったので、実装しました。
リストはrubyのArrayを利用して表現しています。

例えば、(1 2)は[1, [2, nil]のようになります。listクラスみたいなのを作って
表現するのも考えたのですが、yarvにはArrayに関する命令があるので、たぶんArrayで表現したほうが、効率がいいんじゃないかと思ったのでこうしました。

それから、lambda関数を使ってcar、cdr、consを試しに書いてみました。

(def cons (a b)
 (-> (f)
  (lamcall f  a b)))

(def car (f)
 (lamcall f  (-> (a b) a)))

(def cdr (f)
 (if (== f nil)
    nil
	(lamcall f  (-> (a b) b))))