2007-07-16から1日間の記事一覧
Vim+MzSchemeのファイル入出力がおかしい。何故かhomeのファイルを開いてしまう。PWDをいじってみたけど変化なし。うぅぅぅ。今の所の対処法は、cd.vimをいじる。 aug CD au! au BufEnter * execute ":lcd " . expand("%:p:h") au BufEnter * let $PWD = exp…
問題 2.1 そういえば「再代入の方法を知らない」という事実に気がついた。正負を逆にするだけで大変だ・・・。う〜ん、う〜ん。新しい変数を用意して代入する手もあるけど、なんかBASIC!って感じなので、パス。考えた末に、 (define (make-rat n d) (define …
ようやく辿り着きました。今日から2章に突入です。Schemeと聞いて思いつくのは再帰、ラムダ、リスト・・・ってこれだけしか思いつかないんですが、シンプルなデータ構造にどんな魔術が潜んでいるのか。めちゃくちゃ楽しみです!!しかし、リストだけで80ページ…
cで面倒なのが、関数を使う前に宣言されてないと使えないって所。関数名変えたり、引数変えたりすると面倒な作業が増えるので、自動化しちゃいたいなぁ・・・と思って、適当に作ってみた。 header ##!/usr/bin/perl my $tags = "tag"; (system("ctags -o $ta…
集中力が高いうちに解こう。 問題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…
微分 微分ってホントに小さく分割して傾きを求めるのね。 (define dx 0.00001) (define (deriv g) (lambda (x) (/ (- (g (+ x dx)) (g x)) dx))) 微分法 - Wikipediaまんまですね・・・。これも新たな手続きを生み出してる。 Newton法 で、この微分を使ってN…
(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…