副作用丸出しでlistを操作してみます。しかし気持ち悪いですねー副作用って。
「Schemeによる記号処理入門」P.38~
(define x '(1 2))
|
xのcar部を破壊的に書き換えています。RubyやSchemeでおなじみの!のついた手続きは実に怖いですねぇ。
(define x '(foo baz))
|
yがxを参照している状態でxを書き換えているのでyの評価値も変わるということですね。なんのことはない、手続き型やOO言語では日常的に行っていることです。
しかし、Schemeのコードで見るととても新鮮ですねー。
C#では参照、C/C++なんかではポインタがらみの話になるんでしょうね(C/C++やったことないのでなんともいえませんが)。しかしSchemeの本でここまでバリバリ副作用丸出しのコードが載ってるってのも珍しい気がします。逆にとてもおもしろいです。
少し後に大域変数(グローバル変数)と副作用(代入:set!)をゴリゴリ使ってstackとqueueを書いてみるところがあるのでそこも面白そうです。いろんな意味で。
しかしどうでしょう、Schemeをやったこと無い人が最初に読む本としては、個人的にはオススメできないかも。おもしろくてわかりやすいけど、やっぱり「The Little Schemer」から入る方がいいような気がする。それか「プログラミングGauche」
posted with amazlet at 09.05.10 猪股 俊光 益崎 真治 |
posted with amazlet at 09.03.30 Daniel P. Friedman Matthias Felleisen おすすめ度の平均: 小さなScheme処理系で学ぶ数学基礎理論 |
posted with amazlet at 09.03.30 Daniel P. Friedman Matthias Felleisen おすすめ度の平均: Little Schemer とセットで |
posted with amazlet at 09.03.17 Kahuaプロジェクト おすすめ度の平均: 日本が米国に先行している稀な事例 |
0 件のコメント:
コメントを投稿