Hatena::Groupsicp

kdmsnrの日記 - 初心者なので最初から淡々と読むよ このページをアンテナに追加 RSSフィード

2008-01-10

[Emacs] とりあえず覚えるキーバインド2つ

11:32 |  [Emacs] とりあえず覚えるキーバインド2つ - kdmsnrの日記 - 初心者なので最初から淡々と読むよ を含むブックマーク はてなブックマーク -  [Emacs] とりあえず覚えるキーバインド2つ - kdmsnrの日記 - 初心者なので最初から淡々と読むよ  [Emacs] とりあえず覚えるキーバインド2つ - kdmsnrの日記 - 初心者なので最初から淡々と読むよ のブックマークコメント

C-c C-e                scheme-send-definition
C-x C-e                scheme-send-last-sexp

Exercise 1.3.

11:32 |  Exercise 1.3. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ を含むブックマーク はてなブックマーク -  Exercise 1.3. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ  Exercise 1.3. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ のブックマークコメント

とりあえず関数作るよねえ

(define (f x y z)

  )

前者2つが最大とすると

(define (f x y z)
  (if (and (> x z) (> y z))
      ()
      ()
      )
  )

二乗した和を出せばよくて

(define (f x y z)
  (if (and (> x z) (> y z))
      (+ (* x x) (* y y))
      ()
      )
  )

それ以外は後者1つを一番前に持ってきて再処理

(define (f x y z)
  (if (and (> x z) (> y z))
      (+ (* x x) (* y y))
      (f z x y)
      )
  )

確認

(f 1 2 3) ; => 13
(f 3 2 1) ; => 13
(f 1 3 2) ; => 13
(f 3 1 2) ; => 13

それっぽいね?

Exercise 1.5.

11:58 |  Exercise 1.5. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ を含むブックマーク はてなブックマーク -  Exercise 1.5. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ  Exercise 1.5. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ のブックマークコメント

つーか、

  • applicative-order evaluation
  • normal-order evaluation

って、何それ?

あー1.1.5に書いてあるのか(ちゃんと読め)。

  • 最初に評価するやつと、
  • 必要になるまで評価しないやつ

らしい。

なので、

applicative-order evaluationだと、

(define (p) (p))

を評価しようとして死亡(goshがーー)。

normal-order evaluationだと、評価されることがないから 0 で終了。

1.1.7

14:53 |  1.1.7 - kdmsnrの日記 - 初心者なので最初から淡々と読むよ を含むブックマーク はてなブックマーク -  1.1.7 - kdmsnrの日記 - 初心者なので最初から淡々と読むよ  1.1.7 - kdmsnrの日記 - 初心者なので最初から淡々と読むよ のブックマークコメント

あー英語を読むスピードが遅いよ……。

数学関数コンピュータのプロシージャの違いは、(what is) と (how to)の違い。

平方根の近似値を見つけるにはニュートン法。

xの平方根は、近似値yがあったとき、

((x/y) + y ) / 2

でいける。

なので、2の平方根は、近似値1があったとき、

(2/1 + 1) / 2 # 次の近似値 1.5
↓
(2/1.5 + 1.5) / 2 # 次の近似値 1.467
↓
(2/1.467 +1.467) / 2 # 次の近似値1.4142

でいける。

これを十分な精度になるまでずっと続ける。

Exercise 1.6.

14:53 |  Exercise 1.6. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ を含むブックマーク はてなブックマーク -  Exercise 1.6. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ  Exercise 1.6. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ のブックマークコメント

ifがスペシャルフォームなのは、真偽の両方の値が同時に評価されちゃうから、かな(再帰の場合は特に)。

Exercise 1.8.

14:53 |  Exercise 1.8. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ を含むブックマーク はてなブックマーク -  Exercise 1.8. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ  Exercise 1.8. - kdmsnrの日記 - 初心者なので最初から淡々と読むよ のブックマークコメント

画像がよく見えないんだけど、

(x/y^2 + 2y) / 3

でよろしいか?

(define (improve guess x)
  (/ (+ (x (square guess)) (* 2 guess)) 3))

あとは同じ。

2008-01-09

test test test

19:27 |  test test test - kdmsnrの日記 - 初心者なので最初から淡々と読むよ を含むブックマーク はてなブックマーク -  test test test - kdmsnrの日記 - 初心者なので最初から淡々と読むよ  test test test - kdmsnrの日記 - 初心者なので最初から淡々と読むよ のブックマークコメント

"Computer science" is a terrible name for this business. First of all, it's not a science; it might be engineering, or it might be art... It's also not very much about computers, in the same sense that physics is not really about particle accelerators, and biology is not really about microscopes and Petri dishes, and geometry is not really about using surveying instruments.


The reason that we think that computer science is about computers is pretty much the same reason that the Egyptians thought that measuring their plots after the flooding of the Nile was about surveying instruments, and not geometry: When some field is just getting started, and you don't really understand it very well, it's very easy to confuse the essence of what you're doing with the tools that you use.

Emacs

19:27 |  Emacs - kdmsnrの日記 - 初心者なので最初から淡々と読むよ を含むブックマーク はてなブックマーク -  Emacs - kdmsnrの日記 - 初心者なので最初から淡々と読むよ  Emacs - kdmsnrの日記 - 初心者なので最初から淡々と読むよ のブックマークコメント

;; gauche
(setq process-coding-system-alist
      (cons '("gosh" utf-8 . utf-8) process-coding-system-alist))
(autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t)
(autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t)
(setq scheme-program-name "gosh -i")
(defun scheme-other-frame ()
  "Run scheme on other frame"
  (interactive)
  (switch-to-buffer-other-frame
   (get-buffer-create "*scheme*"))
  (run-scheme scheme-program-name))
(defun scheme-other-window ()
  "Run scheme on other window"
  (interactive)
  (switch-to-buffer-other-window
   (get-buffer-create "*scheme*"))
  (run-scheme scheme-program-name))
(defun gauche-info ()
  (interactive)
  (switch-to-buffer-other-frame
   (get-buffer-create "*info*"))
  (info
   "/usr/local/info/gauche-refj.info.gz"))
(define-key global-map
  "\C-xS" 'scheme-other-frame)
(define-key global-map
  "\C-cS" 'scheme-other-window)
(define-key global-map
  "\C-cI" 'gauche-info)
 C-c C-c                scheme-compile-definition-and-go
 C-c C-e                scheme-send-definition
 C-c C-k                scheme-compile-file
 C-c C-l                scheme-load-file
 C-c C-r                scheme-send-region
 C-c C-t                scheme-trace-procedure
 C-c C-x                scheme-expand-current-form
 C-c C-z                switch-to-scheme
 C-c ESC                Prefix Command

 C-x C-e                scheme-send-last-sexp

 C-M-q                  indent-sexp
 C-M-x                  scheme-send-definition

 C-c M-c                scheme-compile-definition
 C-c M-e                scheme-send-definition-and-go
 C-c M-r                scheme-send-region-and-go