2017-05-18 4 views
0

以下のコードは、@nから20から@myListまでの数字を追加することを想定しています。再帰関数の引数としてリストを渡そうとしていますが、構文が正しくありません。どうすればいい?LISPでdefunを使ってリストに引数を渡すにはどうすればよいですか? (再帰的に)

注:間違って追加を使用していると思います。

;Add numbers from @n til 20 to @myList 
(defun someFunction(myList, n) 
    (if (= n 20) ;Base case, return 20 
     20 
    ) 
    (append myList n) ;Append n to the end of myList 
    (someFunction myList (+ n 1)) 
) 
+0

何使用は、 '、'コンマのですか?それはLispで理にかなっていますか?あなたはIF構成を持っていますが、その価値を使用しません - なぜですか?今のように、あなたは 'IF'形式を削除することができ、それは何の違いもありません。 –

+0

基本的なLispを見直す必要があるようです。 Lispがあなたが使った他の言語のようなものであると仮定しないでください。 (あなたがもっと忘れることができればいいほど) – molbdnilo

答えて

1

間違いがどこにあるかについてのあなたの正確な質問への答えは、なぜない何かのようではありませんが:

(ql:quickload :alexandria) 
(defun some-function (list start end) 
    (append list (alexandria:iota (- (1+ end) start) :start start))) 
関連する問題