Land of Lisp 2章メモ

2章メモ

Land of Lisp 2章を読んでのメモ。

defparameter/defvar

グローバル変数定義。 defparameterだと同名の変数を定義した時に上書きされる。 defvarだとされない。

defun

deffunではない。

ash

arithmetic shift(算術シフト)の略。

lsh(logical shift)があるのかと思ったらなかった。 Emacs Lispにはあるらしいけど。

setf

set fieldの略らしい。 変数の場所を返す式を突っ込んで評価後にそこに代入みたいなことをできるとか。

あとsetとかsetqがあって、setが基本でsetq(set quote)は変数名がくる(事が多い)第一引数のとこがクオートされるとか。

let/flet/labels

let,fletはわかるけどlabelsってどういう命名なの。。。

Source

(defvar *big* 100)

(defvar *small* 1)

(defun guess-my-number ()
  (ash (+ *big* *small*) -1))

(defun smaller ()
  (setf *big* (1- (guess-my-number)))
  (guess-my-number))

(defun bigger ()
  (setf *small* (1+ (guess-my-number)))
  (guess-my-number))

(defun start-over ()
  (setf *big* 100)
  (setf *small* 1)
  (guess-my-number))