- Lisp Scheme Part40 [転載禁止]©2ch.net
330 :デフォルトの名無しさん[sage]:2016/03/21(月) 00:04:00.00 ID:4m5Wnyvm - >>329
condはifとbeginに置き換えられる condをマクロとして実装してる処理系は多い まず処理系のソースを見てごらんよ (cond (test1 body1) (test2 body2) (else bodyn))は (if test1 (begin body1) (if test2 (begin body2) (begin bodye))) に一旦展開された後で項書き換えとかコンパイルとかされる 要するにcondのbody節は複文相当で最後の式の値が全体の式の値になる 構文が判らないレベルなら教科書は一旦捨てて処理系のソース読んだ方が早い
|
- Lisp Scheme Part40 [転載禁止]©2ch.net
331 :デフォルトの名無しさん[sage]:2016/03/21(月) 00:27:45.71 ID:4m5Wnyvm - ちなみにschemeはマクロを除いて基本構文は5つしか必要ない
define lambda set! if beginだったかな? でも厳密にはquote関係も数に入れると10個ぐらいかもしれない それ以外は全て上の5構文を組み合わせたマクロとして定義できる つまり上の5構文だけマスターしとけばよい 例えばletがマクロなら(let((var value)) 〜)は((lambda(var) 〜)value) のように意味を全く違えずに置き換えられる 残りのマクロも同様に基本構文への展開形を連想できるようになれば schemeの基本はマスターしたと思ってよい ただし肝心のschemeのマクロの定義は手段が沢山あってカオスなので schemeマクロの闇については自分で調べて下さい gaucheなら大きく分けて2つだろうけど
|
- Excel VBA 質問スレ Part40 [無断転載禁止]©2ch.net
727 :デフォルトの名無しさん[sage]:2016/03/21(月) 04:44:20.97 ID:4m5Wnyvm - VBAを24時間もの長い間動かしていると奇妙で名状し難い不定な動きを引き起こすことについて宇宙的に議論したいんだよ
な?
|