(make-thread :name common-lisp :part 5)
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
400:デフォルトの名無しさん 08/08/24 14:21:12 (defmacro name (vars form &body body) ...) てな, form を作りたいんですけど form の評価結果が, vars で指定された書く変数に代入される ような, 定型マクロってどっかに転がってませんか? 気持ちとして, やりたいことは vars が '(a b c) で form が (1 2 3) を返す場合 `(let ,(mapcar #'fun ,vars ,,form) ;form の前の 「,,」 の気持を分かって ==> (let ((a 1) (b 2) (c 3)) ... と, 展開したい 401:デフォルトの名無しさん 08/08/24 14:30:48 destructuring-bind? 402:デフォルトの名無しさん 08/08/24 14:31:37 >>400 destructuring-bindかな こんな (destructuring-bind (a b c) (list 1 2 3) (+ a b c)) =>6 403:デフォルトの名無しさん 08/08/24 19:03:42 >>398 クロージャ理解の壁だね。やりたい事はわかるが、おしい。もう一歩。 ここで変数のスコープとかの理解が加われば先に勧めるよ。 クロージャは変数をキャプチャするが、それは「クロージャが作成された」環境の変数なんだ。 cplus が作成されたときに参照している count はグローバル環境の count で、let で作った束縛じゃない。 したがって、後から関数の外側で let で束縛を作っても意図した動作にはならない。 この場合は count がスペシャル変数としてグローバル環境に定義されていた場合はまた話が違うんだけどね…。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4064日前に更新/237 KB
担当:undef