@hanadix REBOOTED

音楽好き(聴く書く演る)なイット系労働者の日常と妄想

SICPで種まき

出張でパンパンになっていたかばんががらりと空いたので、思わず、むかしむかし買った

計算機プログラムの構造と解釈

計算機プログラムの構造と解釈

を入れてしまったのが運のつき。

以下は a に abs(b) を加える Scheme プログラムのサンプル。

(define (a-plus-abs-b a b)
  ((if (> b 0) + -) a b))
;; 大事なのはここまで

(display (a-plus-abs-b 1  2))
(newline)
(display (a-plus-abs-b 2 -3))
(newline)
  • 関数 a-plus-abs-b は引数 a b を取ります
  • if(> b 0) [最近の言語では if(b > 0) に相当] の結果
    • b > 0 なら + を返す
    • b > 0 でなければ - を返す
      • ので (+ a b) か (- a b) [最近の言語では (a+b) か (a-b) に相当]が評価

というわけで実行してみましょう。
最初の a-plus-abs-b は 1+2=3 を返し、次のは 2-(-3)=5 を返すはずです。

ksh% gosh hoge.scm
3
5

ksh%

if の結果で後段の処理の演算子まで変えられます…。なんでもありですか?
オレ言語作る気がかなり失せました。

あのー、SICP すげえ重いのですが、これを通勤で読めと?

…読みます。

※いっぱいTYPOがあったのを修正


あと、業務連絡です。私の友人の酒屋の濱田屋さんのネットショップのサイトが DDoS 食らってる(?)らしく URL が変更になりました。
神戸・地酒とワインの濱田屋

いつもこちらの集まりで美味しいワインを飲んで騒いで幸せになっております。
ワインおよび日本酒で「そのスジ」な一本をお求めな方は、いっちょ覗いてみてください。
なお、本情報の掲載にあたっては濱田屋さんから URL 変更のお知らせを受けただけで、広告という点は一切ないことを書き添えておきます。