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

問題1.42

(define (compose f g) (lambda (x) (f (g x))))

問題1.41

(define (double f) (lambda (x) (f (f x)))) (((double (double double)) inc) 5) (double double)で手続きを4回実行する手続きになるのだけど、それにdoubleを作用させることで、8回適用させることになると思って、実行したらちょっとびっくり。16回適用す…

問題1.40

(define (cubic a b c) (lambda (x) (+ (* x x x) (* (* x x) a) (* x b) c))) ていうか、λの中が汚すぎw

9月『技術ひろば.net』に参加してきました。

http://hiroba-tech.net/tabid/70/Default.aspx会場は、新宿のマイクロソフト。この前のアジャイルのときにも思ったけど、こういうところにオフィスがあるのはうらやましい。 ぼくの場合、 鉄道大好き 高いところ大好き な人間なので、新宿の高層ビル街と言…

アジャイルチームワーキンググループ#2

と言う会合に参加してきた。 参加者は15人。簡単な自己紹介後に、『イイチームとは何か?』と言うテーマで議論した。 とりあえず、ぼくが印象に残ったこと。 チーム員が向上心を持っていること チーム員が自発的に動けること 見捨てない/あきらめない どこに…

問題1.39

昨日の続きで一気にやっちゃえば良かった。 (define (tan-cf x k) (define (square x) (* x x)) (define (d i) (- (* 2 i) 1)) (define (n i) (if (= i 1) x (- (square x)))) (cont-fact n d k))

テストケースのカバレッジ

お隣のチームがカバレッジの話で盛り上がってたようなのだが、カバレッジってどこまで有効な指標なのだろうか?ぼくのイメージでは、 コードが網羅的に記述されている。 全ての組み合わせが網羅されている。 関数が状態を持たない。 と言う場合には、カバレ…

問題1.38

ネイピア数を求める問題。 Diの漸化式が違うだけ。 (define (d i) (if (= (remainder i 3) 2) (/ (* (+ i 1) 2) 3) 1)) この問題を解いてるときに、前の問題の答えが全く間違っていたことが判明。 黄金比はNi, Diが常に1と非常に特殊なケースなので、バグが…

問題1.37

反復版 (define (cont-fact n d k) (define (iter kai n d count) (cond ((= count 0) kai) (else (iter (/ (n count) (+ (d count) kai)) n d (- count 1))))) (iter 0 n d k)) (最初に書いたコードは間違ってました。黄金比の場合、Diが常に1なので、気づ…

問題1.36

○○シミュレータでよく使う手です。でも、英語で"damping"と言うのに対して、日本語で『緩和法』と言うのは、少し違和感がある気がする。ていうか、緩和と言う言葉を乱用しすぎてるのかもしれんが。とりあえず、2.0を初期値にした場合 Normal版: 34回で収束 …

問題1.35

最近、数値解析をやっているので、このような更新式じみた式を見ると萌えるw (fixed-point (lambda (x) (+ 1 (/ 1 x))) 1.0) => 1.6180327868852458

SICP-Lite #3

気づくと、まだ3回目。もっと、何回もやっている記憶がするなぁ。 環境フレーム 今日は、環境と環境フレームの話からスタート。 SICPの本には、環境の説明がされているのですが、Gaucheの本には同じことを環境フレームと言う概念で説明してます。 Gaucheの本…

問題1.34

何か寝不足気味だけど、少しでも進めておこう。λ萌え〜な問題かと思いきや、 (define (f g) (g 2)) (f f) => (f 2) => (2 2) => Error: 2が関数じゃないから。 って、lambda関係ないやん>

オープン性

訳あって、4つの値を一度に取ってくるメソッドが欲しいなぁ、と思った時に、RubyだとClassのオープン性を使って、いとも簡単に実現できちゃう。 class Array def each4() i = 0 while i < self.size yield self[i..i+3] i += 4 end end end すご〜く便利なん…

問題1.33

ここまでくると、コードから意味を読み取るのは大変。馴れが重要なのかな? filtered-accumulate (define (filtered-accumulate filter combiner null-value term a next b) (if (> a b) null-value (if (filter a) (combiner (term a) (filtered-accumulate…

問題1.32

この辺から、抽象化しすぎで段々雲行きが怪しくなる。 実際にこのようなコードを書いたとしたら、ちゃんとメンテできるだろうか? accumulate再帰的手続き (define (accumulate combiner null-value term a next b) (if (> a b) null-value (combiner (term …

問題1.31

今日は比較的順調。 product手続き (define (product term a next b) (if (> a b) 1 (* (term a) (product term (next a) next b)))) productを使ったfactorial (define (factorial n) (define (term x) x) (define (next n) (+ n 1)) (product term 1 next …

問題1.30

sum手続きを反復プロセスに書き直す問題。 (define (sum-iter term a next b) (define (iter a result) (if (> a b) result (iter (next a) (+ result (term a))))) (iter a 0)) これは、意外とすんなり書けた。多分、sumと言う手続きが数え上げる意味合いの…

問題1.29

シンプソンの公式の問題。 意外とむずかった。というか、やっているうちに、高階関数のことをさっぱり忘れてしまって、『何やってんだっけ?』と言う状態に陥ってしまった。 (define (simpson f a b n) (define h (/ (- b a) n)) (define (y k) (f (+ a (* k…

高階手続き

だいぶん、問題をすっ飛ばして、ここまでやってきた。 さて、高階関数。日本語にすると、普通っぽいけど、英語だとやたらめったらかっこ良い。"Higher-Order Function"そんなかっこい高階関数ですが、普段プログラミングしているとほとんど現れない。という…

LLTV

一日遅れですが、感想を書かせてもらいまっす。ぼくが一番印象に残ったのは、一番最初のshiroさん、弾さん、よしおかさんの『朝から生テレビ』。 記憶に残っている言葉を字にすると(全く正確じゃないよ。そのうち、公開されるであろう動画の方を見てね。)、 …

Time Capsule

mac

これを買った目的は二つで、 バックアップちゃんと取ること 無線LANのアクセスポイント 一つ目は、言わずもがな。最近は、Airを仕事にも使っているので、さすがにバックアップしとかないと、ちょい怖い。 と言うことで、早速初回バックアップをしたのだけど…

散財

mac

昨日、同僚と一緒に有楽町ビックカメラ、立川ビックカメラとはしごして、以下のものを購入。アップル Time Capsule 2TB MB996J/A出版社/メーカー: アップル発売日: 2009/08/01メディア: Personal Computers クリック: 3回この商品を含むブログ (2件) を見るM…

問題1.23(Profile)

と言うことで、まんま同じように取ってみた。 http://d.hatena.ne.jp/tkuro/20090828/1251471257 オリジナル gosh> (begin (profiler-reset) (profiler-start) (prime? 100000000003) (profiler-stop) (profiler-show)) Profiler statistics (total 45 sampl…

違いについて

ぼくの中では、Ruby = Python (二アリーイコールです) と思ってたのだけど、使っていると結構違いに気づかされる。例えば、メソッドの扱い。 Pythonだと、 >>> def square(x): ... return x * x ... >>> square <function square at 0x65370> とオブジェクトを返してくれるけど、 Rubyだ</function>…

Pythonの"if __name__ == '__main__:'

Pythonでお気に入りの構文。Rubyでどうするんだろう、と思ってググったら、 http://d.hatena.ne.jp/lurker/20060524/1148469949 にあった(微妙にタイトル間違ってるけど)。 if $0 == __FILE__ then # 直接呼ばれたときのみ実行される end また、一つストレス…

問題1.27, 1.28

飛ばします。 何かこの辺は、問題見るのも疲れる。多分、一番最初に一人でやったとすると、ここで本を破いてるかもwww

問題1.26

感覚的には、 expmodを2重に評価している。 expmodは木構造再帰 なので、O(n)になっちゃうよ、ってことかな。実験省略。

問題1.25

わからない。

問題1.24

飛ばします。