プログラミング再入門

プログラミングをもう一度ちゃんと勉強する読書ノート

2013-03-01から1ヶ月間の記事一覧

SICP 2.1.2 Abstraction Barriers

インターフェースを介して実装の詳細を隠すカプセル化に通じるお話。 ノート barrierは囲い、防護壁。抽象化の境界線、と言った感じか。 the underlying idea of data abstraction is to identify for each type of data object a basic set of operations i…

SICP 2 Building Abstractions with Data

第1章では手続きの作り方、性質、抽象化・一般化の方法を学びましたが、この章はデータ構造の話な模様。 ノート 例えば有理数を扱う場合、分子・分母のペアを一塊のデータとして扱えるとプログラムがすっきり書ける。複合データが内部的にどう表現されてい…

SICP 1.3.4 Procedures as Returned Values

戻り値としての手続き。 ノート Average dumpを使ったsqrtの定義は、 (define (sqrt x) (fixed-point (lambda (y) (average y (/ x y))) 1.0)) y ⇒ x/yと言う定義の形を崩してしまっている。(lambda (y) (/ x y))と言う形をそのまま使う為には、yを受け取っ…

SICP 1.3.3 Procedures as General Methods

ノート 汎用メソッドとしての手続き。 Finding roots of equations by the half-interval method 二分方による方程式の解(根)。f(a) 紹介されている定義を実際に動かしてみる。追加で必要な関数はaverageのみ。 (define (average a b) (/ (+ a b) 2)) 実行…

SICP 1.3.2 Constructing Procedures Using Lambda

ノート lambdaを使った手続きの構築。 ほんの小さな、かつその場限りの関数にいちいち名前を付けなければならないのは面倒。関数を定義するときのdefineはlambdaを使った表記の省略形である。 Schemeではlamdaをそのままオペレータとしてリストの先頭で使う…