LISPの勉強のためJavaScriptでLISPを実装しています。
Wikipediaの純LISPの項目を見るとatom, eq, car, cdr, consの基本関数とcond, quote, lambda, defineの特殊形式を実装すると自分自身を解釈実行できるeval(超循環評価器)を理論上構成できる、とのこと。
なんとかevalを実装(それらの最小要素での実装は自分には早かったのでjsで実装)し、また変数を利用できるようにするためset関数(defineと同じ?)をjsで実装し、+,-,*,/などの基本的な四則演算関数をjsで実装しました。
lisp
1(set (quote a) 1) ; グローバル変数aに1を代入 2(+ 1 a) ; 2
なんとも言い難い感動を覚えたのですが、jsによる関数の実装で言語拡張を続けており、いまいち自分が作ったlispの上で自身を拡張していくというステップに踏み込めません。
LISPでまともにプログラミングできるようにするため
LISPを実装した後に実装したLISPを使って実装すべき関数何でしょうか?
個人的にはdolistをlispで実装したいと思っていますが、実装しようとするといまいち繰り返し処理が実装できず、困っています。
わからないことが多すぎて回答が困る話題になると思いますので、純lispの実装から始まり、lispでlispをどのように拡張していくか丁寧に記載されている本やブログなどございましたらそちらの紹介でもいいので、お助けください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。