2016-07-09 10 views
-2

私は、コマンドを次のように内側のリストを持つリストを作成しようとしています中リストにリストを作成することはできませんが、それは動作していない:は、Lisp

(リスト1 2 3(リストABC))

*** - SYSTEM :: READ-EVAL-PRINT:変数Bに値がありません

ここで変数Bがわかりません。

編集:私はclispを再起動して再試行しました。今回は変数Aです!

$ clisp 
    i i i i i i i  ooooo o  ooooooo ooooo ooooo 
    I I I I I I I  8  8 8   8  8  o 8 8 
    I \ `+'/I  8   8   8  8  8 8 
    \ `-+-'/  8   8   8  ooooo 8oooo 
    `-__|__-'  8   8   8   8 8 
     |   8  o 8   8  o  8 8 
    ------+------  ooooo 8oooooo ooo8ooo ooooo 8 

Welcome to GNU CLISP 2.49 (2010-07-07) <http://clisp.cons.org/> 

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993 
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997 
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998 
Copyright (c) Bruno Haible, Sam Steingold 1999-2000 
Copyright (c) Sam Steingold, Bruno Haible 2001-2010 

Type :h and hit Enter for context help. 

[1]> (list 1 2 3 (list a b c)) 

*** - SYSTEM::READ-EVAL-PRINT: variable A has no value 
The following restarts are available: 

変数a、b、cの値を設定しようとしましたが、それでも機能しません。

[5]> (let ((a 1)(b 2)(c 3))) 
NIL 
[6]> (list 1 2 3 (list a b c)) 

*** - SYSTEM::READ-EVAL-PRINT: variable A has no value 
The following restarts are available: 
USE-VALUE  :R1  Input a value to be used instead of A. 
STORE-VALUE :R2  Input a new value for A. 
ABORT   :R3  Abort main loop 
Break 1 [7]> 
+3

ランダムに実験するのではなく、私が以前提案したようなLispの紹介をしてみませんか? –

+0

このような奇妙なことをデバッグするためのヒント:まず簡単なことを試してみてください。 '(list 1 2 3(list a b c))'が問題を引き起こした場合、 ''(list 1 2 3) 'や'(list a b c) 'を最初に試してください。何かより簡単なものがあれば、複雑な表現になります。あなたが変数を設定するためにしたことがうまくいかなかったら、変数を設定することについてもっと学んでください。(実際にはうまくいかなかったので)... – verdammelt

答えて

2

変数を使用する前に割り当てる必要があります。

(defvar a 10) 
(defvar b 20) 
(defvar c 30) 
(list 1 2 3 (list a b c)) 

これは返す必要があります:

(1 2 3 (10 20 30)) 

あなたがLETを使用し、それがローカル変数を作成し、その範囲はLETの本体だけです。

(let ((a 1) (b 2) (c 3)) 
    (list 1 2 3 (list a b c))) 
=> (1 2 3 (1 2 3)) 
+0

実際に私はこのコマンドを使用していましたが、上記。私も変更されたかっこで試して、間違って投稿しました。 – rnso

+0

変数 'a'、' b'、 'c'を設定しましたか? – Barmar

+0

いいえ、その理由が必要です。 – rnso