SLIMEのM-. M-,

setqについて書いた。

SLIMEのM-. M-, C-cC-mあたりがおもしろい

(incf x)をC-cC-mすると

(LET* ((#:G766 1) (#:NEW765 (+ X #:G766)))
  (SETQ X #:NEW765))

とマクロ展開される

slimeでwindowを二つにわけたい

Gaucheだとこんな感じに設定しておけば、C-cSでウィンドウを2つに分け、一方でgoshインタプリタを実行するコマンドを定義する。

これをSlimeでもやりたかったので調べてみたところ、

(global-set-key "\C-cs" 'slime-selector)

と.emacsに書いておけばC-cs[?cdeilt]でバッファを切り替えられるらしい。

?:  Selector help buffer.
c:  SLIME connections buffer.
d:  *sldb* buffer for the current connection.
e:  most recently visited emacs-lisp-mode buffer.
i:  *inferior-lisp* buffer.
l:  most recently visited lisp-mode buffer.
t:  SLIME threads buffer.
v:  *slime-events* buffer.

とりあえずこれでいいかな。

sbcl+SLIME+Carbon Emacs

今年はcommon lispを覚えようと目標を立てたので、早速環境を整えてみた。clisp+SLIMEだとwarningがやたら出たり挙動がへんだったりしたのでとりあえずsbclを使うことにした。

そしてNinety-Nine Lisp Problemsを解いていく。

あとはこの二冊をやる予定。

ProductName Principles of Biomedical Informatics
Ira J. Kalet PhD
Academic Press / 6173円 ( 2008-10-15 )


ProductName 実践Common Lisp
Peter Seibel
オーム社 / 4410円 ( 2008-07-26 )


proccesingをEmacsで編集する時にはjava-modeで

色づけされるのでちょっとよい。

processing

processingのコードをEmacsで編集する方法はここから。

template toolkit mode

最近また、Catalystで色々作っているので、昔のエントリを探してTT modeの設定をした。

;;tt
(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
(setq auto-mode-alist
      (cons
       '("\\.html$" . html-helper-mode) auto-mode-alist))
(setq auto-mode-alist
      (cons
       '("\\.tt2$" . html-helper-mode) auto-mode-alist))
(require 'html-tt)
(add-hook 'html-helper-mode-hook 'html-tt-load-hook)
(add-hook 'html-helper-mode-hook '(lambda () (font-lock-mode 1)))

そして、Jonathan Rockwayのトークは聴いておくべきだったかなとスライドみながら思った。

catalystのE-Bookは本を買うと安く買えたので、ついでに買っておいたけど、本を見るまでもないときなんかに調べものができたりとか、検索できるので意外と重宝している。

elispでackerman関数

schemeだとelseのところがelispだとtになる。どの条件にも当てはまらないとnilだから、elseはtで表現するらしい。

(defun A (x y)
  (cond ((= y 0) 0)
        ((= x 0) (* 2 y))
        ((= y 1) 2)
        (t (A (- x 1)
            (A x (- y 1))))))

Ackerman関数ってのが良く分からなかったので調べたら爆発的に計算量が増える関数らしい。しかも末尾再帰的にならないらしい

elispで平方根

相変わらずSICPをelispで

ProductName 計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン
ピアソンエデュケーション / 4830円 ( 2000-02 )


(defun goodenough (guess x)(< (abs (- (* guess guess) x)) 0.001))
(defun improve (guess x) (average guess (/ x guess)))
(defun average (x y) (/ (+ x y) 2))
(defun sqlt_it (guess x)
 (if (goodenough guess x)
      guess
    (sqlt_it (improve guess x) x)))

(sqlt_it 1.0 5)
2.2360688956433634