2007-07-16から1日間の記事一覧

Vim+MzSchemeのファイル入出力がおかしい。

Vim+MzSchemeのファイル入出力がおかしい。何故かhomeのファイルを開いてしまう。PWDをいじってみたけど変化なし。うぅぅぅ。今の所の対処法は、cd.vimをいじる。 aug CD au! au BufEnter * execute ":lcd " . expand("%:p:h") au BufEnter * let $PWD = exp…

SICPを読む(34) 問題2.1 ちとはまった。

問題 2.1 そういえば「再代入の方法を知らない」という事実に気がついた。正負を逆にするだけで大変だ・・・。う〜ん、う〜ん。新しい変数を用意して代入する手もあるけど、なんかBASIC!って感じなので、パス。考えた末に、 (define (make-rat n d) (define …

SICPを読む(33) 2.1.1 いよいよリストです。

ようやく辿り着きました。今日から2章に突入です。Schemeと聞いて思いつくのは再帰、ラムダ、リスト・・・ってこれだけしか思いつかないんですが、シンプルなデータ構造にどんな魔術が潜んでいるのか。めちゃくちゃ楽しみです!!しかし、リストだけで80ページ…

関数の宣言のを自動化したい。

cで面倒なのが、関数を使う前に宣言されてないと使えないって所。関数名変えたり、引数変えたりすると面倒な作業が増えるので、自動化しちゃいたいなぁ・・・と思って、適当に作ってみた。 header ##!/usr/bin/perl my $tags = "tag"; (system("ctags -o $ta…

SICPを読む(32) 問題1.40 - 1.43 lambda, lambda, lambda。

集中力が高いうちに解こう。 問題1.40 最初、(newtons-method (cubic a b c) 1)とかやって戸惑った。 (define (cubic a b c) (lambda (x) (+ (cube x) (* (square x) a) (* x b) c))) (newtons-method (cubic 0 0 0) 1) 色々試した。 問題1.41 (((double (do…

SICPを読む(31) 1.3.4(2) Newton法

微分 微分ってホントに小さく分割して傾きを求めるのね。 (define dx 0.00001) (define (deriv g) (lambda (x) (/ (- (g (+ x dx)) (g x)) dx))) 微分法 - Wikipediaまんまですね・・・。これも新たな手続きを生み出してる。 Newton法 で、この微分を使ってN…

SICPを読む(30) 1.3.4(1) 値として返される手続き

(define (square x) (* x x)) (define (average a b) (/ (+ a b) 2)) (define (average-dump f) (lambda (x) (average x (f x)))) ((average-dump square) 10) 感動した。関数から新たな関数を生み出してるよ!!展開すると、 ((average-dump square) 10) ((la…