計算機プログラムの構造と解釈[14]
sicp.info 導入
nanasi さんに SICP が info 形式で配布されているとの情報を貰ったので,
さっそく導入してみた.
neilvandyke.org - SICP in Texinfo Format
http://www.neilvandyke.org/sicp-texi/
まあ, 当然内容は, 英語だけど,
買うと 5000 円以上する本の内容がそのまま無料で手に入るとは・・・.
こういうところで, 英語に強い人は得だなあと思うよ.
sicp.info.gz を落としてきたら, 適当なディレクトリに配置.
Emacs から使えるようにした.
- dired 使って, sicp.info を sicp.info にする.
- .emacs を確認.
- /usr/local/info/dir に設定を追加.
- Emacs のブックマークに SICP の info を追加.
C-h i で表示される一覧に info ファイルを追加するには,
.emacs に Info-default-directory-list へ info ファイルを置いたディレクトリを
追加すれば, いいもんだと思ってたけど, 全然違った.
これで, 妙な時間を食った.
前に Gauche の info を追加したはずなのに, 完全に忘れてた.
C-h i で表示される一覧に追加するには, /usr/local/info/dir に設定を追加する.
今の内容は, こんな感じ.
追加したのは, 最終行の * SICP ... ってやつ.
This is the file .../info/dir, which contains the topmost node of the Info hierarchy, called (dir)Top. The first time you invoke Info you start off looking at this node. File: dir, Node: Top This is the top of the INFO tree This (the Directory node) gives a menu of major topics. Typing "q" exits, "?" lists all Info commands, "d" returns here, "h" gives a primer for first-timers, "mEmacs<Return>" visits the Emacs manual, etc. In Emacs, you can click mouse button 2 on a menu item or cross reference to select it. * Menu: The Algorithmic Language Scheme * SLIB: (slib). Scheme Library * Gauche (ja): (gauche-refj.info). An R5RS Scheme implementation. * SICP : (sicp.info). Structure and Interpretation of Computer Programs.
sudo emacsclient /usr/... でこのファイルを編集できなかったから,
久々に vim を使った.
Emacs を sudo つけて起動しなおすのも面倒だし.
いやー, vim の操作ちょっと忘れてたや.
一瞬, どうやって終了するんだっけと考えてしまった.
2.1.2
びっくりするぐらい時間かかるw
悲しいぐらい英語力がねえ.
問題 2.2
ケアレスミスで時間かかりまくった.
y-point の引数で y としてるのに, (cdr x) とかやってた.
こういうミスはよくないなあ.
(define (make-segment st en) (cons st en)) (define (start-segment seg) (car seg)) (define (end-segment seg) (cdr seg)) (define (make-point x y) (cons x y)) (define (x-point x) (car x)) (define (y-point y) (cdr y)) (define (midpoint-segment segment) (let ((start (start-segment segment)) (end (end-segment segment))) (make-point (/ (+ (x-point start) (x-point end) 2)) (/ (+ (y-point start) (y-point end) 2))))) (define (print-point p) (newline) (display "(") (display (x-point p)) (display ",") (display (y-point p)) (display ")"))
実行結果.
gosh> (define xp (make-point 1 2)) xp gosh> (define yp (make-point 3 4)) yp gosh> (define line (make-segment xp yp)) line gosh> line ((1 . 2) 3 . 4) gosh> (midpoint-segment line) (1/6 . 1/8) gosh> (print-point (midpoint-segment line)) (1/6,1/8)#<undef>
いやー
倍以上時間かかるw
慣れるまでがんばろう.
英語は, しゃべれなくて, 書けなくてもいいから, せめて読めるようになりたいねえ.
# ひっくい目標だなあ.
前もせめて読めるようになろうと,
印刷してきた 100 ページぐらいの NASM のマニュアルを1日2ページずつ訳していったしねえ.
一応それは最後までやった. だから, 今回もゆっくりと途中で挫折しないようやってこう.
当時よりも訳すためのツールもそろってるわけだし.
ちなみにその訳した NASM のマニュアルの出来はヒドイもんだった.
後で読んでも, とても理解できんw
問題 2.3 もやろうとしたけど, 駄目だ. 眠い.
また明日〜.
更新時刻
2007年, 4月7日, 2:35