common lisp

SLIME + utf-8 の件

今まで Common Lisp では計算ばっかりしていたので、扱うのは ASCII 文字ばかだったため気付かずに幸せに暮らしていたのだが、昨日ちょっと気が向いてテキストファイルを読み込んで集計するプログラムを作ってみようと思った。UTF-8 エンコーディングは SBCL…

SBCL threads on Intel Mac

CL 処理系 SBCL の Mac OS X / Intel におけるスレッドサポートに関する議論メモ(@sbcl-devl)。2006-03-21 Threads and Lutexes on Mac OS X for Intel Status Update より: Nathan Froyd and I have been working on getting threads up and running on Ma…

SLIME 2.0 Released

Emacs 上で動作する Common Lisp (CL) の開発環境、SLIME が 2.0 としてリリースされた。開発者の方々、お疲れさまです。今まで CVS を使っていたので、自分自身の環境としてとくに大きな変化はないものの、最新の SLIME がリリースされた意義は大きい。SLIM…

マクロを使ったジェネリック関数宣言の一例

x, y 座標をスロットに持つ vec クラスを考える。Common Lisp では次のような定義になる。 (defclass vec () ((x :initarg :x :initform 0d0 :accessor vec-x) (y :initarg :y :initform 0d0 :accessor vec-y)))ついでに factory も定義しておく。 (defun ma…

do-array

数値計算に現れるパターンの一つに、ループを使って配列の各要素に何らかの演算を行うというものがある。頻出するパターンと来ればマクロの出番だ。Common Lisp のマクロの書き方について非常にわかりやすく書いてある "Macros: Defining Your Own" (Practic…

let-double

マクロの練習その2。Common Lisp では declare を使って変数の型を指定できる。コンパイラはより効率的なコードを生成してくれるので数値計算には便利。 (let ((a 2d0) (b 3d0)) (declare (double-float a b)) (let ((c (+ a b))) (declare (double-float c…

do-lines

マクロの練習で書いてみた、標準の dolist や dotimes マクロに類するループ系マクロ。名前の通り一行ずつ処理。 (defmacro do-lines ((line &optional (in *standard-input*)) &body body) `(do ((,line (read-line ,in nil 'eof) (read-line ,in nil 'eof)…