Drkcore

27 04 2009 perl lisp Moose Moosp Tweet

MooseでLispを実装してみる(ラムダリストと変数の局所化)

やさしい Lisp の作り方 by Java and by C#を参考に書いてみる。(11日目のあたり)

lambda1

  1. argumentsをスタックに積む。その際積んだスタート地点を記憶しておく
  2. ラムダリストを順番にスタックの値と交換する(元の値は待避される)
  3. body部を評価する
  4. ラムダリストをスタックの値と交換する(元の値に戻す)
  5. 評価した値を返して終了

例としてa=>5,b=>1であるとき以下の式を評価してみる。

((lambda (a b) (+ a b)) 2 3)

スタックに引数の値を積む

lambda2

スタックの値とラムダリストの値を交換する

lambda3

body部を評価したらスタックに待避した値を戻す

lambda4

これでOK

Moospもこの通りに実装すればよいみたい。あとsexpEvalの

argList = (List)argList.cdr;

は必要ないような気がする。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021