2017-04-07 6 views
0

私はSchemeをはじめて学び、練習するために、すべての値が1である指定された長さのリストを返すプログラムを作成しようとしています。私はMIT Windowsの10上/ GNUエドウィン・エディタは、ここで私が入力したコードです:エドウィンスキームのバインドされていない変数

(define (listlength n) 
    (if (= n 1) 
     (list 1) 
     (append (list 1) (listlength (- n 1))))) 

(listlength 5) 

私は(1 1 1 1 1)を返すためにC-x C-eために望んでいるだろうが、代わりに私が結合していない変数のエラーを取得:

;Unbound variable: listlength 
;To continue, call RESTART with an option number: 
; (RESTART 3) => Specify a value to use instead of listlength. 
; (RESTART 2) => Define listlength to a given value. 
; (RESTART 1) => Return to read-eval-print level 1. 
;Start debugger? (y or n): 

唯一の理由をIそれは私がdefinitでlistlengthを呼び出すのが好きではないということを考えることができますon listlength、しかしそれはScheme Schemeを作るものの一部であると考えられているので、???私は迷っている?あなたが私に与えることができる任意のおかげでありがとう!

+1

スタックトレースを見ると、再帰呼び出しまたは元の呼び出しでエラーが発生していますか? – Barmar

+1

関数定義を評価するのに 'C-x C-e'を使いましたか?あるいは '(listlength 5)'形式の最後で 'C-x C-e'だけを押しましたか? [manual](https://www.gnu.org/software/mit-scheme/documentation/mit-scheme-user/Edwin-Scheme-Evaluation.html#Edwin-Scheme-Evaluation)を参照してください。 – Renzo

答えて

0

機能の最後にC-x C-eを使用するかどうかを確認する必要があります。 C-x C-eは、カーソルの左側の式を評価します。あるいは、カーソルがどこにあっても全体の表現を評価するM-zを使うことができます。 私はSchemeの初心者でもあり、答えがあなたを助けることを願っています!

関連する問題