Arantium Maestum

プログラミング、囲碁、読書の話題

2016-06-08から1日間の記事一覧

Clojure/Overtoneで遊んでみる

SICPばかりでもなんなので、Clojureで音楽が作れるっぽいOvertoneライブラリと戯れてみる。 Overtoneプロジェクト: github.com 参考にさせていただいたブログ: Overtone: Clojureで音楽を書こう : サルノオボエガキ とりあえずdependenciesを足して、イン…

SICPの勉強 問題2.30~32

2.30 木構造のデータ(nestしたリスト)の全ての葉ノードを二乗する関数: (defn square-tree [tree] (cond (empty? tree) () (seq? (first tree)) (cons (square-tree (first tree)) (square-tree (rest tree))) :else (cons (sq (first tree)) (square-tre…

SICPの勉強 問題2.27~28

2.27 リストの要素を逆順にするだけでなく、そのリストに含まれる全てのリストも同時に逆にする関数: (defn deep-reverse [x] (if (not (seq? x)) x (loop [items x result ()] (if (empty? items) result (recur (rest items) (cons (deep-reverse (first …

SICPの勉強 問題2.23

リストの要素全てに副作用ありの関数を適用していく関数(戻り値はnil): (defn for-each [f items] (if (empty? items) nil (do (f (first items)) (for-each f (rest items))))) そういえばこの関数に関してyoutubeのコメント欄でものすごいツッコマれて…

SICPの勉強 問題2.20~21

2.20 引数のリストの先頭の要素が奇数なら奇数の要素のみ全て、偶数なら偶数の要素のみ全てのリストを返す関数: (defn same-parity [x & xs] (letfn [(p? [n] (= (rem x 2) (rem n 2))) (f [items] (cond (empty? items) nil (p? (first items)) (cons (fir…

SICPの勉強 問題2.17~18

題意的に再帰を使って組み上げていくのがポイントなのだと思うが、やっぱり面倒くさい。 この章で作り上げていくmapやreduceといった抽象的にリストを捉えられる関数の偉大さを実感出来るのが最大の収穫だろうか。 2.17 リストの最後の要素を取り出す関数: …