【入門】CommonLispその2【質問よろず】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0950デフォルトの名無しさん
2007/06/04(月) 02:19:48自分もあまりCommon Lispは知らないけれど(質問ばっかりしてるし)
まずはCommon Lisのインタプリタを作る以前に
Schemeのインタプリタから
作った方が良いと思う。
末尾再帰
(defun factorial (n)
factorial-loop (n 1 1))
(defun factorial-loop(n i p)
(if (> i n) p
(factorial-loop n (+ 1 i) (* i p))))
(factorial 5)
↓
(factorial-loop 5 6 120)で返るよ。
再帰は
(defun factorial (n)
(if (= n 0) 1
(* (factorial (- n 1)) n)))
遅延評価は
On lispの214ページに実装例が書いてあります。
自分もいつかインタプリタ作ってみたいなぁ。
今読んでる本の最後の課題で作るけど。
レス数が950を超えています。1000を超えると書き込みができなくなります。