Programmer's Note

コード読み書きの備忘録。

2017-01-01から1年間の記事一覧

Vimにneosnippetを導入

SICPのexerciseをやっていると、例えば(ns …)の宣言など定型的な部分は、snippetがあると便利だなーと思う。 探してみたらvimのpluginで定番のneosnippetがあった。 GitHub - Shougo/neosnippet.vim: neo-snippet plugin この動作にはneocompleteが必要だっ…

[SICP] SICP第2章読了

第2章の最後の課題は残しているが、読了した。データの抽象化の威力をまざまざと見せられた。 なんといってもこの章のクライマックスの多項式の演算プログラム。 データの型およびClojureでいうマルチメソッドのシステムを自前で用意して、実にエレガントに…

mapのループをforで表現する

前回(mapと再帰で木構造を扱う - Programmer's Note)は、mapと再帰で木構造を扱う処理を書いたが、mapはシーケンスを順になめていく高階関数であって、いわゆるコレクションを扱うfor文と変わらない。 Clojureにもforマクロは用意されていて、かなり表現力…

mapと再帰で木構造を扱う

SICP楽しすぎるな。 第2章の途中、mapを使って木構造のデータ処理を紹介していて、えらく感動した。 題材は以下のとおり、木構造の中の全要素に対して任意のfactorを掛ける関数scale-treeを作ること。 (def ttree (list 1 (list 2 (list 3 4) 5) (list 6 7)…

recordを使ってデータ構造をつくる

SICPまじ楽しいな。この本は、一読して内容を理解するだけじゃなくて、手を動かしてコードを写経したり練習問題をやると、純粋にプログラミングの楽しさを味わえる。本質的な部分(パラダイム)を濃密に扱っているので、数学と一緒で、手を動かして思考を追…

SICP第一章読了

SICP第1章を読了した。演習問題もコンプリート! 言語はSchemeではなくClojureを使ったのでClojureのいい練習にもなった。 振り返ると、プログラミングの教材として、構成が実によく考えられていて感動すら覚える。 一級品の少年漫画やRPGなみのストーリー…

Clojureでパスカルの三角形

SICP遅々と読む。練習問題にパスカルの三角形の要素を計算せよ(再帰を使って)、というのがある。 フィボナッチ数列の次くらいに手軽な題材でいろいろ試せて遊べるなと。 Clojureらしい解き方は、やっぱ遅延シーケンスを作るやり方だろうなと。 出力形式は…

続Clojureのdestructuringメモ

前回「 Clojureのdestructuringメモ - Programmer's Note 」の続き。 マップのdestructuring 文字列をキーに使った場合を試す (def mab {"a" 1 "b" 2}) (let [{:strs [a b]} mab] (println b "," a)) ; 結果 => 2,1 Goood!! 下記非短縮形もOK。 (def mab {"a…

Clojureのdestructuringメモ

Clojureのdestructuringはベクターやmapの中から要素を取り出すのに、とても便利な機能。 さて、Clojure - Destructuring in Clojureに書いてあることなのだが、手を動かして確かめてみる。 使えるところ 関数 (defn foo [] (...)) 無名関数 (fn [] (...)) l…

世界観と世界を変える一冊

ほぼ一年ぶりの更新か^^; さて、「7つの言語7つの世界」を読了。一通り全言語のエッセンスは学べたかな。(Prolog , Haskellは最後はちょっと飛ばしたが、もう少し知りたい時に読めばいいかなと) 章順ではなく気になる言語から読んでいって、途中ブランクがだ…