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

3.3.2 Representing Queues

(define (front-ptr queue) (car queue)) (define (rear-ptr queue) (cdr queue)) (define (set-front-ptr! queue item) (set-car! queue item)) (define (set-rear-ptr! queue item) (set-cdr! queue item)) (define (empty-queue? queue) (null? (front-pt…

3.3.1 Mutable List Structure

3.12 (define x (list 'a 'b)) (define y (list 'c 'd)) (define z (append x y)) z ; => (a b c d) (cdr x) ; => (b) (define w (append! x y)) w ; => (a b c d) (cdr x) ; => (b c d) 3.13 (define (last-pair x) (if (null? (cdr x)) x (last-pair (cdr …

3.2 The Environment Model of Evaluation

変数束縛と環境云々。問題は絵を描くのばっかなので理解したことにして省略。

3.1 Assignment and Local State

set!でデータの中身を変更できるようにすると参照透明性が失なわれてデータの同一性が判断できなくなるよ、というお話(かな?) 3.1 (define (make-accumulator acc) (lambda (n) (begin (set! acc (+ acc n)) acc))) 3.2 (define (make-monitored proc) (let…

2.5.3 Example: Symbolic Algebra

はついに怠け心が勝って飛ばすことに。

String#succ x 10 つづき

どこかまでかはかわいいのに、どこかから突然かわいくなくなっちゃう感じ。 うーん、確かにそんな感じですね。。 function iterate (f, s) { return chain([s], { next: function() { return s = f(s) } }) } function right(a, b) { return b } var last = …

String#succ x 10

こっそり var succ = compose(String.fromCharCode, partial(operator.add, 1), methodcaller('charCodeAt')); compose.apply(null, list(repeat(succ, 10)))('a'); // => "k"びみょーっつうか長い。

Hit-a-Hint設定しなおし

バージョンアップしたら動かなくなった。 Hint Options > XPath of the elements to be hinted //a[@href]|//input[@type="text" or @type="submit" or not(@type)]|//textarea|//select|//button|//*[@onclick]こんな感じで。でもなんかバギー。 あとFirebug…

プロセスを殺さずログアウト

zsh

zsh: you have running jobs. "disown"というコマンドで実行中のジョブを切り離しできる。また、バックグラウンドでコマンドを実行する時に % ./hoge &でなく % ./fuga &!とやれば自動でdisownしてくれるらしい。(未確認) 参考: 医療費控除(基礎編)〜パソコ…

Prototype.jsの$のちょっと変わった使い方 - IT戦記見て

$A(arguments).map($)でできね?って思って適当なコードで試してみたら $A(arguments).map($) // => [[[object HTMLSpanElement],undefined],[[object HTMLSpanElement],1],[[object HTMLSpanElement],2]]Enumerable.map(iterator)がイテレータの第2引数に要…

2.5.1 Generic Arithmetic Operations, 2.5.2 Combining Data of Different Types

じぇねりっく!じぇねりっく! コードがめちゃくちゃ長いです。 apply-genericでうまいことやってみよう。 前準備 (基本) (define (square x) (* x x)) (define-values (put get) (let ((*table* '())) (values (lambda (op type proc) (set! *table* (cons …

2.4 Multiple Representations for Abstract Data

斜め読みしてたらどこのコード使えばいいか分からなくなった。 データを複数のやり方で表現するよ。ちょうど複素数の直交座標・極座標表示が身近なのでその例を使います。 前準備 put,getは予めあるものとして進めているので(ずいぶん不親切だ)、適当に定義…

2.3.4 Example: Huffman Encoding Trees

ハフマン符号。面倒だなーって思ってたら前やった奴みつけたからそれを流用。 前準備 (define (make-leaf symbol weight) (list 'leaf symbol weight)) (define (leaf? object) (eq? (car object) 'leaf)) (define (symbol-leaf x) (cadr x)) (define (weigh…

2.3.3 Example: Representing Sets

データの集合をいろいろな方法で表現しましょう。 (define (element-of-set? x set) (cond ((null? set) #f) ((equal? x (car set)) #t) (else (element-of-set? x (cdr set))))) (define (adjoin-set x set) (if (element-of-set? x set) set (cons x set))…

2.3.2 Example: Symbolic Differentiation

シンボルを使って式の微分。 前準備 (define (deriv exp var) (cond ((number? exp) 0) ((variable? exp) (if (same-variable? exp var) 1 0)) ((sum? exp) (make-sum (deriv (addend exp) var) (deriv (augend exp) var))) ((product? exp) (make-sum (make…

2.3.1 Quotation

2.53 省略。 2.54 (define (%equal? a b) (cond ((and (pair? a) (pair? b)) (and (%equal? (car a) (car b)) (%equal? (cdr a) (cdr b)))) ((and (not (pair? a)) (not (pair? b))) (eq? a b)) (else #f))) 2.55 ''abracadabra ; => (quote abracadabra)だ…

2.2.4 Example: A Picture Language(あとで)

これhttp://d.hatena.ne.jp/motemen/20051226/1135612691でできると思ったんだけど、何だかbelowの定義が変(教科書通りにやっても違った絵が出る)なのとdraw-lineが定義されてなかったのとDrSchemeで実行するのがストレス溜まるのでスキップ。

2.2.3 Sequences as Conventional Interfaces

だんだん問題解くのが面倒になってきた。 前準備 (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) 2.33 (リストの基本関数をaccumulateで書き換え) (define (%map p …

2.2.1 Representing Sequences,2.2.2 Hierarchical Structures

nilの代わりに'()を使用する。 2.17 (define (last-pair lis) (if (null? (cdr lis)) lis (last-pair (cdr lis)))) 2.18 (define (reverse lis) (define (reverse-iter lis reversed) (if (null? lis) reversed (reverse-iter (cdr lis) (cons (car lis) rev…

2.1.1 Example: Arithmetic Operations for Rational Numbers

今までは手続きの抽象化、ここからはデータの抽象化。 リンク先のサイトの Figure 2.1: Data-abstraction barriers in the rational-number package が分かりやすい。 Programs that use rational numbers (Rational numbers in problem domain) add-rat sub…

調査

etc

google:ctrl-alt-shift: 82,600 hits google:ctrl-shift-alt: 35,000 hits google:alt-shift-ctrl: 11,100 hits google:alt-ctrl-shift: 20,300 hits google:shift-ctrl-alt: 59,000 hits google:shift-alt-ctrl: 22,100 hits

1.3.4 Procedures as Returned Values

タイトル修正。 lambda 前準備 (define tolerance 0.00001) (define (fixed-point f first-guess) (define (close-enough? v1 v2) (< (abs (- v1 v2)) tolerance)) (define (try guess) (let ((next (f guess))) (if (close-enough? guess next) next (try n…

1.3.3 Procedures as General Methods

タイトル修正。 1.34 (define (f g) (g 2))MzSchemeで。 :mz (f f) procedure application: expected procedure, given: 2; arguments were: 2; (f f) ; => (f 2) ; => (2 2) 1.35 (fixed-pointで黄金比) (define tolerance 0.00001) (define (fixed-point f…

1.3.1 引数としての手続き

素人くさい読書会に行けないので自習する。と決めてから早速やってなかった…。 前準備 (define (sum term a next b) (if (> a b) 0 (+ (term a) (sum term (next a) next b)))) (define (integral f a b dx) (define (add-dx x) (+ x dx)) (* (sum f (+ a (/…

それVimでもできるよ

Vim

…って誰かやらないかなぁ。

カンファレンス行けない日記

etc

Plagger Conference行けなくなった…。 RubyKaigi チケット瞬殺…。

GWはれーるずざんまい

ほんとか。 のテストでは動くのに、本番サーバで動かそうとすると真っ白な画面しか返ってこない(Content-Length: 0)。一晩悩んで、寝て、起きて、動く部分からちょっとずつ試していったら結局、sever.username と server.groupname の設定を入れると反応しな…

2chに書き込むモジュール(がない)

CPAN検索(http://search.cpan.org/search?query=2ch&mode=all)したら全然無くて驚いた。 あれだけ節操なくモジュールつくってはあげる(という印象のある)Perlerが2ちゃんねるに書き込むライブラリを作ってないっていうのは、なんか不文律でもあるんだろうか。

ActivePerl@Windowsで対話式に

perlshというものがあるらしいんだけど、この環境じゃなんかうまくいかん*1ので、 C:\>perl -de 42 Loading DB routines from perl5db.pl version 1.28 Editor support available. Enter h or `h h' for help, or `perldoc perldebug' for more help. main::…

当初の予想(予定)どおり

etc

http://tokyoenvious.xrea.jp/b/とこの日記の境界があいまいになってきた。こっちはもっとくだらんこと/メモにしよう。