Lisp

SParser-2.1 released

http://fhuman.esys.tsukuba.ac.jp/~nozom/SParser-2.1.zip変更点は、 終端文脈で無駄な継続を生成しないようにした read, writeを実装した 有理数(分数)に対応した GUIに入力履歴が付いて若干使いやすくなった その他バグ修正多数 例によってドキュメントも…

末尾再帰と継続(メモ)

レキシカルスコープと継続ができたので、あとSchemeに必要なものとしては末尾再帰の最適化がある。せっかくだからこれも実装したい。 どうやって実装すればいいか。最初はインタプリタではなくコンパイラを作らないといけないと思ったが、ひょっとすると継続…

続・継続

昨日の時点ではまだバグがあったが、そのバグも直った。たぶんこれで完成したと思う。最終的にはスタックですらなく、単に現在の継続を覚えておくだけで良くなった。これは継続自身に次に処理を渡すべき継続の参照を持たせることにしたためで、こうしないと…

継続(Continuation)

なんかゴニョゴニョやってるうちに出来たみたい。 > (+ (call/cc (lambda (x) (x 1) 2)) 3) ==> 4 以下のページなども参考にしつつ、継続スタックを自前で管理することで実現した。継続に対応させるために、プリミティブ関数の実装がとても力業になってしま…

LispオブジェクトをJavaで実装する

ここ数日Java版Lispインタープリタを作っている。実装できそうなところから作っていったので、現時点ではEmacs LispとSchemeの混ざったようなへんてこな言語仕様になっているが、それでもそれなりのことはできるようになった。まだいくつかバグが残っている…

○○プログラマのレベル10

Perlプログラマのレベル10 Scheme:Schemeプログラマのレベル10 ちょっとしたURLメモははてなブックマークでやってたんだけど、それだと誰も読まない(自分も含めて)ということが分かったので、これからは日記にも書くことにする。自分のレベルはPerlだと7.2…

選択範囲の空白を削るEmacsコマンド

bookmarkletを登録するたびに、置換コマンドと手作業で毎回空白を削る作業をするのが不毛だったので、こんなコマンドを作ってみた。まだいろいろと不完全だけど、とりあえず動く。 (defun pack-whitespace-region (start end) (interactive "r") (save-excur…

いろいろリンク

Rubyリファレンスマニュアル - Rubyリファレンスマニュアル http://www.ruby-lang.org/ja/man/index.cgi うらにわにはにわにわにはにわにわとりがいる http://www.unixuser.org/~euske/doc/niwatori/index.html XPoL (XML Processing on Lisp) http://www.gr…

EmacsからJavaアプリケーションを呼び出す

Emacsは大抵のことは何でもできるけど、GUIに凝ろうとすると途端に行き詰まってしまう。 たとえば現代的なGUIツールキットなら必ず含んでいるような、コンボボックスとかツリービューとかは、等価な機能を提供できたとしても、GUIレベルで同じようなものを実…

買った本

ハッカーと画家―コンピュータ時代の創造者たち / Paul Graham, 川合史朗 ISBN:4274065979 風華のいる風景 1 / 大井昌和 ISBN:4832275283 DEATH NOTE 5 / 大場つぐみ, 小畑健 ISBN:4088737741 武装錬金 6 / 和月伸宏 ISBN:4088736966 三毛猫ホームズの降霊会 …

OOエンジニアの輪! 〜 第 21 回 川合史朗 さんの巻 〜

http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview21.html(from http://www.rubyist.net/~matz/20050124.html#p03 > id:umedamochio:20050123:p3)

ハイフネーション解除

必要に迫られて数分でハックしたもの。思いのほか便利だったのでここにメモとして残しておく。 (defun interactive-dehyphenation () (interactive) (while (and (looking-at ".") (re-search-forward "\\([^\n]\\)\n" nil t)) (if (string= (match-string 1…

一時間で覚える Ruby

http://mayah.jp/archive/programming/ruby.html (from http://www.dioscroy.ne.jp/~wataru/tdiary/?date=20041203#p01)今までRubyはPerlの変種という認識だったけど、これを読んだらむしろLispに近いのかもしれないと思うようになった。より正確には、Ruby=…

継続とはなにか

元々は上のトピックで補足として書いていたものが、長くなって読みづらくなって来たので分けることにした(きっとこれはこれで役に立つこともあるんじゃないかなあという期待も込めて)。書いてる本人も良く分かってないことを調べつつ書いているので、内容の…

継続=ふっかつのじゅもん?

この前ふと頭に浮かんで、すごく納得した思い付き。なぜこんなことを考えたかというと、 ある状態を保存しておいて後で呼び出す、というのはゲームのセーブ機能と似てるなあ call/ccに渡された継続の値を使用も保存もせずにブロックを抜けると何も起きないけ…

Perl to Lisp

文字列処理はだいたいPerlでやることが多いんだけど、諸事情でEmacs上でできた方が便利なときがあって、そのためのメモ。 m// ==> string-match s/// ==> string-matchしてreplace-match split ==> split-string join ==> mapconcat while (<>) {} (defun fo…

自分自身を表示するプログラム

よくC言語のパズルで取り上げられる題材(自己言及的プログラム、自己再生プログラムとも呼ばれる)。Lispだと特に技巧的なことは必要なくて、 (defun self-print () (append (list 'defun 'self-print) (cdr (symbol-function 'self-print)))) のようにごく普…

Functional Programming - 関数プログラミングの世界

http://homepage3.nifty.com/Aransk/contents2.html最近Schemeにハマっている。Emacs Lispも多少分かるようになってくると、この言語の泥くさい部分がいろいろと見えてきて、そんなときに出会ったのがScheme。反復は末尾再帰のSyntax Sugarにすぎない、なん…

MeadowでExcite翻訳

といっても単にhttpリクエスト投げてるだけだけど。ほとんどopen-network-streamのデモみたいなもの。http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=reference%20functionとかhttp://www.bookshelf.jp/cgi-bin/goto.cgi?file=elisp&node=Codin…

MeadowをSDIっぽく使う(追加)

(defvar sdi-other-window-always-through-frames nil) (defun sdi-other-window (arg) (interactive "P") (if (or sdi-other-window-always-through-frames (window-single-p (selected-window))) (progn (other-window (prefix-numeric-value arg) t) (rai…

MeadowをSDIっぽく使う

突然思い立ってこんな関数を書いてみたら、とりあえずそれっぽくはなった。 ;;; Emacs SDI (require 'cl) ;; remove-duplicates (defun window-single-p (win) (eq win (next-window win))) (defun frame-single-p (frame) (eq frame (next-frame frame))) (…

Lisp的Perlコーディング

$buf=pack("C*", map { ord(getc(IN))^($_&0xff) } (0 .. $size-1)); foreachでもできるけど右辺に余計な変数がないのが美しい。TMTOWTDI。

planet-source-code.com LISP Categories

http://www.planet-source-code.com/vb/default.asp?lngWId=13#categories(from: はてなキーワード > id:shoma:20040115#p1)

非同期プロセスをEmacsで扱う

http://www002.upp.so-net.ne.jp/mamewo/async_emacs.html(from: google)

よろずや 野田 開のウェブサイト Lisper への道

GNU Emacs Lispリファレンスマニュアル

http://www.fan.gr.jp/~ring/doc/elisp-manual/elisp.html

Lisp/AIの参考書

Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig Artificial Intelligence: A Modern Approach (Second Edition) by Stuart Russell and Peter Norvig エージェントアプローチ 人工知能 古川 康一 訳 On Li…

On Lisp邦訳

http://user.ecc.u-tokyo.ac.jp/~g340299/#lisp 私家版の邦訳が存在するということは、訳本はない?うーん日本では良いLispの本はないのか。ウィンストンのLISP原書3版も上巻は出版元に在庫がないって言われるし。

上で挙げた shrink-alist という関数は次のようにも書ける:

(remove-duplicates alist :key 'car :from-end t) 一行かよ!

スタック

ある関数を書こうとして、タブ位置が揃わないことが気になってフォントを調べた。 フォントを設定するためにframe-alistをいじってるうちに上のshrink-alist相当の関数が必要になった。 remove-ifに当たる関数が思い出せずにWebを調べているうちにScheme関連…