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

:班ゼミ

とりあえず、キックオフのために機能考えたアイデアを発表して、先生の反応を伺ってみた。 発表の内容が非常にあいまいかつ、大体が妄想だったので、とりあえず例題を作ってきてよ、ということで終わりましたが。まあ、確かに僕自身もよくわかってないので例…

TopCoderはじめます

毎週開催されるコンテストがあるので、それに参加する。 そして、他の人のソースを見てお勉強。

2.4抽象データの多重表現

(define (add-complex z1 z2) (make-from-real-imag (+ (real-part z1) (real-part z2)) (+ (imag-part z1) (imag-part z2)))) (define (sub-complex z1 z2) (make-from-real-imag (- (real-part z1) (real-part z2)) (- (imag-part z1) (imag-part z2)))) (…

2分木をASCIIで描くプログラム

SICPで2分木を書く問題が出てきましたが、ASCIIで木を手書きすると手間がかかるので、木を出力してくれるプログラムをSchemeで書いてみました。Gaucheで動作します。こんな感じの表示になります。出力はあまりコンパクトにはなりません。(左右の子の木は列…

*1175152529*[SICP] 2.2 階層データ構造と閉包性

2.2.1 並びの表現 問題2.17 ;; lのcdrが空リストならlのcarのリスト ;; そうでなければ、lのcdrのlast-pair (define (last-pair l) (if (null? (cdr l)) (list (car l)) (last-pair (cdr l)))) 問題2.18 ;; 反復的('()はnil) (define (reverse l) (define (i…

2.1 データ抽象入門

2.1.1 例: 有理数の算術演算 P49のmake-ratの実装の変更は使用している部分の変更を必要としないから、データ抽象が行えている。 (define (add-rat x y) (make-rat (+ (* (number x) (denom y)) (* (number y) (denom x))) (* (denom x) (denom y)))) (defin…

*1174724256*[SICP]第二章 データによる抽象の構築

1章では手続きによる計算プロセスの抽象を学んだ。2章ではデータオブジェクトの表現(実装)と使用を分離するデータ抽象を学ぶ。

一章の復習

置き換えモデルは、手続きの適用をその定義で置き換えていくこと。置き換えモデルには作用的順序と正規順序があり、前者は披演算子を先に置き換え、後者は演算子(一番外側の手続き)からおきかえていく。作用的順序は一番内側から置き換えていくので最内簡…

1.3 高階手続きによる抽象

高階手続き(手続きを返したり受け取ったりする手続き)による強力な抽象の力を見ていく。 1.3.1 引数としての手続き 問題1.29 (define (inc n) (+ n 1)) (define (cube n) (* n n n)) (define (sum term a next b) (if (> a b) 0 (+ (term a) (sum term (ne…

最近Google Readerが"Oops!"とばかり言う

のですが。。

1.2 手続きとその生成するプロセス

視覚化大事ね。 1.2.1 線形再帰と反復 遅延演算が山なりに増えて減るのが再帰的プロセス。特に遅延演算の列の長さが入力に対して線形に増えていくと線形再帰的プロセス。プロセスの長さが伸び縮みしないのが反復的プロセス。とくに必要なステップ数が線形に…

関数呼び出しを木構造で表示

SICPで関数の呼出を木構造で表示する問題がでてきたけど、これを手で書くのは大変。というわけで、Schemeでマクロを使って、呼出の木を自動で表示するのを作りました.slibのtraceと大体同じです。場合によっては、traceよりも見やすくなると思います.木で表…

序文

序文中 読者は繰り返し「何のため?何のため?」と問うべきである はSICPを読む上で大事な姿勢だと思う。 第一版への前文 プログラミング各種の流儀と美学に健全な感覚を持つ この本で僕が得たいものは,まさにこれだと思う。 Lispは組織--変動する数万の,…

第1章 手続きによる抽象の構築

計算プロセスは計算機野中に済む抽象的な存在 プロセスはデータを操作する。プログラムはプロセスに指示を与えるために作る。なるほど。

1.1 プログラムの要素

手続きとデータがそれほど違わないというのは,P164の脚注に書いてある。手続きをデータのように見ることも,データを手続きのように見ることもできるというわけだ。 1.1.1 式 1.1.2 名前と環境 名前とオブジェクトの対が環境。 1.1.3 組み合わせの評価 1.1.…

SICPを読みはじめる

ここ1年くらいでOCaml,Haskell,Schemeという関数型言語に触ってきた. SICPは関数型言語を学ぶ上での聖典的存在らしいので、これは読まなくては!ということで、 読み進めていきたいと思う.

unisonを導入

LinuxとWindowsを併用しているのでファイルの同期のために、 Unison File Synchronizerを導入しました。 このソフトの特徴は、同期を双方向に行えるところ。(あとOCamlで書かれているところw) 同記の時の情報を記憶しているので、ファイルの作成や削除合っ…

いろいろ設定

http://www.bookshelf.jp/soft/を参考にいろいろと設定。いや、このサイトは 宝の山です。emacsがまるで別物になりました。特に、wdired, moccur, ibuffer, iswitchbあたりは素晴らしい。