メッセージ。 - Lispのマクロ
# Lispのマクロ
いまonLispを読んでるんだけど、半分ぐらいまできて思ったこと:
Lispのマクロって、コンパイラに似ている。マクロによって吐き出されたLispコードがマシン語で書かれたコードみたいに見えたというか。具体的にそう感じたのはこれ:
ということは、、というか、、Lispってコンパイラなんだ、とやけに腑に落ちた感じがした。
で、onLispはコンパイラの使い方を解説している本なんだ。マシン語としてのLispコードを、マクロでどうやって吐き出すか。どういう風にマクロを使うと、意図したコードを吐き出すコンパイルができるのかを解説している。
この本で解説しようとしているのは、マシン語としてのLispや、Lispマクロというコンパイラの仕組み、コンパイラができることとは何か?なんじゃないだろうか。そして、Lispがほかの言語と違う部分があるとするならそこだと指摘しているのではないか。まだ途中まで流し読みしただけだけど、そういうことが書かれている気がした。
Lispのマクロって、コンパイラに似ている。マクロによって吐き出されたLispコードがマシン語で書かれたコードみたいに見えたというか。具体的にそう感じたのはこれ:
(let* ((#:g1 x) (#:g4 ar) (#:g3 (incf i)) (#:g2 (aref #:g4 #:g3)) (#:g6 lst) (#:g5 (car #:g6))) (unless (> #:g1 #:g2) (rotatef #:g1 #:g2)) (unless (> #:g1 #:g5) (rotatef #:g1 #:g5)) (unless (> #:g2 #:g5) (rotatef #:g2 #:g5)) (setq x #:g1) (system:set-aref #:g2 #:g4 #:g3) (system:set-car #:g6 #:g5))
Lispのマクロが吐き出したLispコード
ということは、、というか、、Lispってコンパイラなんだ、とやけに腑に落ちた感じがした。
で、onLispはコンパイラの使い方を解説している本なんだ。マシン語としてのLispコードを、マクロでどうやって吐き出すか。どういう風にマクロを使うと、意図したコードを吐き出すコンパイルができるのかを解説している。
この本で解説しようとしているのは、マシン語としてのLispや、Lispマクロというコンパイラの仕組み、コンパイラができることとは何か?なんじゃないだろうか。そして、Lispがほかの言語と違う部分があるとするならそこだと指摘しているのではないか。まだ途中まで流し読みしただけだけど、そういうことが書かれている気がした。
Comment
Trackback