2011-04-03から1日間の記事一覧

lisp の and と or

そういえば、lisp の and と or は、 C言語とかの論理演算子(&& ||)と違って、多項で使える(3個以上の引数を取れる)。 はまりそうだから覚え書きしておく。and の例 ; 左から評価していき、 (and 1 2 nil 4 5) nil ; ひとつでも 偽 を見つけると、そこで評価…

lisp 構文わすれた。

ひさしぶりに cond を使ったら、構文を忘れててえらい時間かかってしまった。 備忘録として、if や case と合わせてステンシルを置いておく。(ぉ さすがに if は忘れんだろ)cond の例 (let ((var 'c)) (cond ((eq var 'a) '1) ((eq var 'b) '2) ((eq var 'c)…

末尾再帰

末尾再帰をやってみる。 (defun my-fact (n) ; 普通の再帰 (if (= n 0) 1 (* n (my-fact (1- n))))) ↓ (defun my-fact (n) ; 末尾再帰 (my-fact-loop n 1 1)) (defun my-fact-loop (n i p) (if (> i n) p (my-fact-loop n (1+ i) (* i p)))) ;; test (trace …

lambda って

勉強になったのでメモしておく。 http://dev.ariel-networks.com/wp/archives/198とくに、この部分 (lambda (x) x) ;; この"lambda" は lambdaマクロを持つフォーム ↓ #'(lambda (x) x) ;; この"lambda" は ラムダ式 ↓ (function (lambda (x) x)) ;; この"la…

xyzzy で trace を使ってみる

ウェブで lisp の入門とか講義テキストとかを見ていると、 trace という関数で呼び出しの引数と戻り値の履歴を確認できるようだ。 これは再帰を勉強しているときはめちゃめちゃ役に立つに違いない。 でも xyzzy には trace 関数がないみたいだ。じゃあ作ろう…

netinstaller のキーバインドを変えてみる

コマンドとキーマップがわかったので適当に変更してみる。 ;; 配布元サイトをブラウザで開く ;; o --> e に変更 (define-key ni::*site-map* #\e 'ni::site-open-in-browser) (undefine-key ni::*site-map* #\o) ;; アンインストール ;; d --> u に変更 (def…

netinstaller の操作

netinstaller のキーバインドを毎回忘れるので、デフォルトの状態の (describe-bindings) の結果を貼っておく。 (というか、xyzzy インストールフォルダの site-lisp/ni/readme.txt の50行目あたりをみればいいんだが。) ついでにそれぞれのキーマップ名も書…