を評価するときに、私は(実際には、elispの)Lispの学ぶことをしようとしている、と私はそれを評価するとき私が得る運動プロジェクトオイラーProblem 2Lispのエラーvoid-variable機能
(defun sumfib (n fn1 fn2 sum)
"Calculate Fibonacci numbers up to 4,000,000 and sum all the even ones"
(if (< 4000000 (+ fn1 fn2))
sum
(if (equal n 3)
(sumfib 1 (+ fn1 fn2) fn1 (+ sum (+fn1 fn2)))
(sumfib (+ n 1) (+ fn1 fn2) fn1 sum)))
として次の関数を書いてみました次のエラー:
Debugger entered--Lisp error: (void-variable fn1)
(+ fn1 fn2)
(< 4000000 (+ fn1 fn2))
...
なぜfn1は認識されませんか? 'if'の前に(+ fn1 fn2)を入れようとすると、そこに不平を言っていないので、なぜここでエラーが出るのですか?
また、実際には機能が正しくない可能性があることを認識していますが、今は論理について心配していません。今のところ、私はこのエラーを理解することにのみ興味があります。
ああ、私はかっこがありません...最初の 'if'の後ではなく、 'if-else'であるはずです。ありがとう。 –
ああ、大丈夫です。私はSchemeに慣れていますが、これは少し違ったことです。私は少なくとも幾分役に立つとうれしい。 –