Schemeのリストを探す旅
もうひとつのScheme入門を読みながら今リストを作るところを勉強中。
進捗が遅いのにはふれないでください。
(Emacsの設定して遊んだり、Scheme手習いを読んだり、他にも色々本を読んでいるのです。)
一旦、脳内整理。<<今日の出来事>>
(cons 1 ()) が (1)
になるのがどうしても理解できなくて、Twitterで嘆いてみた。
「んー。やっぱ、(cons 1 ())が(1)になるのが納得できないっていう。。。」
僕の考えとしては
(1 . ())
となってくれないと気持ち悪いということで困っていたら
@cryksさんと@vavalowさんから
(1)
は
(1 . ())
の略記で同義だと言われ白目…。
とりあえず、これはそれで納得。
しかし、Scheme。君はどうしてそんなに同じモノでも表現方法が沢山あるんだい?
ということで、練習問題を解いていたんだけどlistとquoteの違いがよく分からないとなって、下の問題をそれぞれの方法で解いてみた。
問:処理系が次のように表示するデータ構造を cons で作ってください。 ("Sum of" (1 2 3 4) "is" 10)
解: ;consだけで書くと (cons "Sum of" (cons (cons 1 (cons 2 (cons 3 (cons 4 ())))) (cons "is" (cons 10 ())))) ;quoteを使うと (quote ("Sum of" (1 2 3 4) "is" 10)) ;もしくは '("Sum of" (1 2 3 4) "is" 10) ;listを使うと (list "Sum of" (list 1 2 3 4) "is" 10)
こうするとなんとなく違いが理解できる。
むしろこうするまで、quoteとlistって同じじゃないの…?って思ってた。
ということで脳内整理終了。
- 作者: Daniel P. Friedman,Matthias Felleisen,元吉文男,横山晶一
- 出版社/メーカー: オーム社
- 発売日: 2010/10/22
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 129回
- この商品を含むブログ (32件) を見る