Scheme

SICM

Sussman は SICP の他に SICM という古典力学の教科書も書いてたとは。 Structure and Interpretation of Classical Mechanics : wrong, rogue and log Gerald Jay Sussmanと、惑星物理学者のJack Wisdomが書いた古典力学の本である。MITの古典力学の講義の…

リストのカリー化

(a b c d)というリストが与えられたら、(((a b) c) d)というリストに変換する関数とその逆をする関数を作ってみた。 カリー化すると必ず2要素のリストになるので、リストの構造的には、(((a . b) . c) . d)にする方が無駄がないのかもしれないけど、個人的好…

連続した数列を範囲形式にまとめたい

整列済みの number のリストがある。 (1 3 4 5 6 12 13 15) このようなリストで数が連続している部分は '(1 2 3) -> '(1 . 3) のように両端のみを書くような記法を導入する。 最初の例のリストであれば以下のようになる。 (1 (3 . 6) (12 . 13) 15) このよう…

与えられた木から、子→親への対応を作る

木構造が与えられる。 := ( ...) という構造。 これから、子→親の対応を表すalistを作る手続きを書け、というもの。 http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%aa%e3%82%b9%e3%83%88%e5%87%a6%e7%90%86#H-ne4pu7 この問題をやってみた…

括弧を使わないScheme

SRFI-49を使うと出来るらしい。 SRFI 49: Indentation-sensitive syntax http://srfi.schemers.org/srfi-49/srfi-49.html インデントの深さが括弧のネストの深さに対応するようだ。 define fac x if = x 0 1 * x fac - x 1試そうと思ったが、Gaucheは対応し…

R6RSのfold

R6RSからはfoldの仕様が普通になるようだ。よかった。 畳み込み関数の比較 (fold / accumulate / inject / reduce) - blanket sky shiro SchemeもR6RSではfold-left/fold-rightとなって、Haskellのfoldl/foldrと同じになります。 srfi-1のfoldはちょっと特殊…

letのマクロ

letのマクロがどう展開されるか実験する。 本節では、導出式型をプリミティブ式型(リテラル、変数、手続き呼び出し、lambda、if、set!)に置き換えるマクロ定義を示す。 http://www.swiss.ai.mit.edu/~jaffer/r5rsj_9.html#SEC81 Gaucheのletは組み込みのSpec…