lisp

restart-caseの実験

ようするにエラーの修復手段を処理関数側で用意し、呼び出す側は自由に選択できるってことかな? Rubyとかならlowは例外だけを発生させて、lowとmidの間の階層でエラー修復手段つきの関数をつくるのだろうか。 Rubyみたいにスタックトレースにエラーメッセー…

Common Lispのrestartまわりがよくわからん

んー。あとで実験。handler-caseはよくある例外処理なんだろうけど。

SBCLの日本語解説@lispuser.net

http://lispuser.net/commonlisp/sbcl.htmlもう1.0.6出てますよー。

SLIMEの起動時間は短縮できるのかな?

コアファイル(イメージ)を作ってやればきっとできるんだろうね。イメージをファイルに落とすなんてRubyじゃできないことだからとても新鮮。まぁEmacsでもできるんだが。 試してみるか。

Common Lispの標準ドキュメントフォーマットってなんだろう…

PerlはPOD、RubyはRDocとRD。じゃあCommon Lispはなんだろう?docstringなのかな。 cl-ppcreの使い方を「手早く」調べたいけど、documentation関数が返す説明よりもサイトの方が詳しい。どうせだったらその詳しい説明がdocstringになってくれればいいのにな…

『pnmフォーマットファイルをCLOSで作ってみよう』のRubyへの翻訳

http://d.hatena.ne.jp/ytakenaka/20070620/p1 http://d.hatena.ne.jp/ytakenaka/20070624/p1CLOSの理解のためRubyに翻訳してみました。 module RubyPNM # Rubyのモジュールは名前空間も管理 module PNMDataInfo # インスタンスを持たないクラスはモジュール…

ldbはシフトとORで書けるね

http://d.hatena.ne.jp/ytakenaka/20070624/p1図のおかげで一発で理解できました。ありがとうございます。 class Fixnum def b "0b%03b" % self end end 0b111 # => 7 0b001 # => 1 0b111001 # => 57 # (ldb (byte 3 3) var) (0b111001 >> 3).b # => "0b111"…

elispは…

互換性の問題とかで進化の道を選択しなかった。だからいつまでたっても時代遅れの古いLispのまま。末尾再帰を処理してくれないから末尾再帰するとあっというまに止まってしまい、Lispなのにwhileを使えというザマ、おえー。 標準添付のclライブラリで健気に…

菱形継承…

http://d.hatena.ne.jp/ytakenaka/20070623/p1なるほど。データ(スロット)とメソッド共有のためだけの継承というわけですか… 理解に手こずったのはpnm-header/pnm-dataとpnm-data-infoはis_a関係なの!?ってところでした。 Ruby脳なので継承はis_a関係でな…

verbatim文字列、ヒアドキュメント

Rubyの%q!!のようなverbatim文字列、ヒアドキュメントってCommon Lispのリーダマクロで実装できるのかな。エスケープがうざいときがある。

優れたもの…

d:id:ytakenaka:20070405興味のあるソフトウェアのソースコードなんてのはどうだろう?興味がある分野だと断然読みやすいと思う。 俺の場合はelispが身近だけど、Lispらしく書いているソースが少ない気がする。

ん〜菱形継承…

http://d.hatena.ne.jp/ytakenaka/20070620/p1菱形継承は慣れてないから頭が混乱する。多重継承の使い道っていまだMix-inしか知らない。 どうやって理解すればいいんだろ。ドラクエ6の職業システムみたいなものかな。 たとえば僧侶と武闘家をマスターしたら…

elispプログラミングしてるとCommon Lispのパッケージシステムが恋しい

最初からいちいち長い名前なんかにしてたら思考が中断してしまう。 パッケージで名前空間を分けられたら… 多値も恋しい。

Common Lispで書かれたウェブブラウザ

http://www.cliki.net/Closureまだ使ってないけど、JavaScriptとか対応してなさそう…

HyperSpec辞書引きLocal CGI

http://d.hatena.ne.jp/mitsygh/20070620/1182365173id:mitsyghさんのエントリ。同じようなこと考える人はいるものだ。EmacsだとSLIMEで存在する。HyperSpecのデータベースはelisp側が持っているので外部プログラム側がそれを使いたければgnudoit経由で取り…

condition-case / handler-case

elispではcondition-case、Common Lispではhandler-case。

eqはダメ

整数や文字にたいしてeqは使わんほうがいい。 eqlにすべし。 elispでeqを使いまくっていたので注意しなくては。

DRY up your Enumerations in Common Lisp

http://www.devchix.com/2007/05/25/ruby-dry-up-your-enumerations/Common Lispならマクロの出る幕すらない。 (defstruct stooge :name :hair :habit) (defparameter *stuff* (vector (make-stooge :name "Mo" :hair "bowly" :habit "eye poking") (make-st…

sbclでコンパイルしてみるテスト

http://fridge-shell.blogspot.com/2007/02/sbcl.html $ ls -l out -rwxr-xr-x 1 rubikitch users 1059 2007-06-20 01:10 out $ file out out: Bourne shell script text executableやけに実行ファイルが小さいなと思ったら… なーんだ、faslを読み込むshell …

On LispのmemoizeをRubyに翻訳してみる

# (defun memoize (fn) # (let ((cache (make-hash-table :test #'equal))) # #'(lambda (&rest args) # (multiple-value-bind (val win) (gethash args cache) # (if win # val # (setf (gethash args cache) # (apply fn args))))))) module Memoize def m…

Practical Common Lisp 勉強中

Rubyのオブジェクト指向に魅せられて以来rubyistだが、最近はCommon Lispに興味がある。 Lispの一騎当千の記述力の源であるマクロに首ったけになる。 これまで1〜12章、16章読破。現在17章。ん〜、多重継承は鬼門だ…rubyistのサガか。