SICPを読む(3) 問題1.1
まだ手続きの意味がよくわからない。
特殊形式(define,and,not)は手続きではないと書いてあった。ますます意味不明。
それでは、ようやく練習問題。
10 ; 10 (+ 5 3 4) ; 12 (- 9 1) ; 8 (/ 6 2) ; 3 (+ (* 2 4) (- 4 6)) ; 6 (define a 3) ; a (define b (+ a 1)) ; b (+ a b) ; 7 (= a b) ; #f (+ a b (* a b)) ; (+ 3 4 12) -> 19 (if (and (> b a) (< b (* a b))) a b) ; (if (and #t #t) ...) -> 3 (cond ((= a 4) 6) ((= b 4) (+ 6 7 a)) (else 25)) ; (+ 6 7 a) -> 16 (+ (cond ((> a b) a) ((< a b) b) (else -1))) ; 4
今日のSchemeリンク。
僕のレベルは、まさにコレ。
あんな括弧の多い言語、 IQの高い人間じゃないと理解できないに違いない、そもそも実用性がないんじゃないか
しばらくやった人の言葉。こう言いたい。こうなりたい。
なんでこんなにすごいんだ? 何より楽しい。
そして、神レベル。
えっ? カッコ? あ、そうか。そんなものもあったな。いやあ、 すっかり忘れておったわ
こうなる日はこないだろうな・・・。
SICPを読む(4) 問題1.2 - 1.5
問題1.2
(/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5))))) (* 3 (- 6 2) (- 2 7))) ; -37/150
4/5でもOK。
問題1.3
(define (square-3 x y z) (if (> x y) (sum-of-squares x (if (> y z) y z)) (sum-of-squares y (if (> z x) z x)))) (square-3 2 3 2)
アンサーブックを見たら問題を読み間違えてたので、修正。
問題1.4
(define (a-plus-abs-b a b) ((if (> b 0) + -) a b)) (a-plus-abs-b 1 -2) ; 3
面白い。振舞いをを変更出来てしまう。
問題1.5
(define (p) (p)) (define (test x y) (if (= x y) 0 y)) (test 0 (p))
Schemeは作用的順序なので、無限ループ。
(test 0 (p)) ; ->0を評価->(test 0 (p)) ; ->pを評価->(test 0 (p)) ; ->pを評価->(test 0 (p))...
つまり、"引数の中"を先に評価する。括弧の中ではないらしい。
「新次元」のプログラミング言語、Befungeについて。
「新次元」のプログラミング言語Befungeが凄い。
- Greenbear Laboratory - Befunge
- わかりやすい
- Befunge - Wikipedia
- なんとなく掴める
- Befunge
- 実装例
- Befunge-93
- 言語仕様の邦訳
WikipediaのHello,Worldが美しい。
v @_ v >0"!dlroW"v v :# < >" ,olleH" v ^ <
目が慣れると普通に読めるようになるのが不思議。