lisp on yarv製作日誌5

lambdaを使えるようにしました。

 lblock
   (= add (-> (a b)
            (+ a b)))
  end
 
  puts add.call(10, 20)

 #=> 30

lisp側から呼び出す場合は、

 def lamcall(lam, *args)
   lam.call(*args)
 end

のようなメソッドを定義して、

 lblock
   (= add (-> (a b)
            (+ a b)))
   (puts (lamcall add 10 20))
  end

(lamcall add 10 20)のように呼び出します。
lamcallはそのうちCで書き直します。

まったく意図していなかったのですが、変数と関数の名前空間が分かれています。

 lblock
  (def x ()
    (puts x))
  (= x 100)
  (x)
 end
 # => 100