2016-08-18 5 views
0

は、Lisp - 私はlispのGCLでこのような何かをしたいのsetqと車

(setq (car '(a 1)) (cdr '(a 1))) 

の結果を得るために:

(setq a 1) 

はこの、またはこの可能性のようなものですか? よろしくお願いします。Declan

+0

'a'は変数(レキシカルo特別)の名前が既に定義されていますか?それとも未定義ですか? – Renzo

+0

なぜこれをやりたいですか?代わりにハッシュテーブルを使用してみませんか? – uselpa

+0

他のすべての問題に加えて、 'cdr'ではなく' cadr'をここで使いたいと思っています。 –

答えて

0

はい、可能です。 Common Lispはエコシステム全体を持ち、プログラムの実行中にあらゆる種類のことをコンパイルして実行できます。

(setq test value)はもともとは(set 'test value)に変わったマクロでした。 setは廃止されましたが、削除される予定はありません。今

(set 'test 'a) 
(set test 10) 
a ; ==> 10 

setqはあなたが欲しかったあなたは、変数の名前、時間の99.99%以来少し引用符を忘れないでください、あなたが不足している引用符を探すために半日デバッグする必要がないことを確認します。

+1

しかし、 'set'は特別な変数に対してのみ機能することに注意してください。 '' let((x 1))(set 'x 2)x) 'は' 1'に評価されますが 'x'の' 'symbol-value''は' 2'に設定されます。 – tfb

関連する問題