とりあえず暇だったし何となく始めたブログ このページをアンテナに追加 RSSフィード

UNIX 系企業のぺーぺー

2007/04/06

[][] 計算機プログラムの構造と解釈[14]

sicp.info 導入

nanasi さんに SICP が info 形式で配布されているとの情報を貰ったので,

さっそく導入してみた.

neilvandyke.org - SICP in Texinfo Format

http://www.neilvandyke.org/sicp-texi/

まあ, 当然内容は, 英語だけど,

買うと 5000 円以上する本の内容がそのまま無料で手に入るとは・・・.

こういうところで, 英語に強い人は得だなあと思うよ.


sicp.info.gz を落としてきたら, 適当なディレクトリに配置.

Emacs から使えるようにした.

  1. dired 使って, sicp.info を sicp.info にする.
  2. .emacs を確認.
  3. /usr/local/info/dir に設定を追加.
  4. 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

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証