転職します
しばらくブログを放置した上に、突然の報告ですが、
3月末で現在の会社を退職して、
4月から新しい会社にお世話になる事になりました。

今までは、ライフサイエンス研究者向けのシステムを作ってきましたが、
新しい職場では、Webアプリケーション開発の業務につく予定です。

ちなみに、
新しい会社のビルは、前の会社の (本社) ビルの向かい側に建っています。
別に気まずくはないですよ?

というわけで、ブログもまたボチボチ再開していこうと思うので、
よろしくお願いします!!
[PR]
# by fkmn | 2010-03-28 14:45 | 日記
キーボードを掃除した
a0057891_23114697.jpg

年末恒例。
身近なものがキレイになると気持ちが良いですな。
[PR]
# by fkmn | 2009-12-26 23:13 | 日記
On Lisp 第17章 リードマクロ
 リードマクロは、普通のマクロよりも Lisp 言語そのものをいじってる感が強いですなぁ。

Lisp のS式の生涯で重要な3つの瞬間
- 読み込み時
ー コンパイル時
- 実行時

リードマクロ => 読み込み時に機能

17.1 マクロ文字
- マクロ文字: Lips のリーダに特別な扱いを要求する文字
(例、"開き括弧")
- set-macro-character, リードマクロの定義
- クォート (') は、Lisp 最古参のリードマクロの一つ
(set-macro-character #\'
#'(lambda (stream char)
(list 'quote (read stream t nil t))))

- read の引数の最後の3つ
1. ファイル終端に達したときにエラーを起こすか
2. 起こさないなら何の値を返すか
3. read を呼び出している間にも read が呼び出されるかどうか
* ほとんどすべてのリードマクロで、第2、第4引数は t であるべき
# 参考: read - refwiki

17.2 マクロ文字のディスパッチング
- シャープ (#): ディスパッチングマクロ文字
- リードマクロを1文字以上で定義するため
ー make-dispatch-macro-character で独自のディスパッチングマクロ文字を定義可能
- # がデフォルトで定義されている
ー set-dispatch-macro-character, ディスパッチングマクロ文字の新たな組み合わせの定義

17.3 デリミタ
- read-delimited-list, 指定した文字が現れるまで Lisp オブジェクトを読み込み
結果のリストを返す
# 参考: read-delimited-list - refwiki


On Lisp
Paul Graham

4274066371
オーム社 2007-03
売り上げランキング : 82240
おすすめ平均 star

Amazonで詳しく見る
by G-Tools
[PR]
# by fkmn | 2009-12-16 23:55 | 一人読書会
On Lisp 第16章 マクロを定義するマクロ
 「関数を返すマクロ」があるのであれば、「マクロを定義するマクロ」を考えるのは自然な発想ですな。

第16章  マクロを定義するマクロ
- 省略名を定義するマクロ
- アクセス用マクロを定義するマクロ
- アナフォリックマクロを定義するマクロ

16.1 省略
- よく使われるオペレータの名前は短くあるべき
- バッククォートのついた任意の式を見ただけで
展開結果を言えるようになるとは思うべきではない
- マクロでは論理的に不要なかっこは省くのが良い

16.2 属性
- オブジェクト o が属性 p を持ち、その値が v である
=> o の属性リストを利用 (* 便利だが効率の悪い表現)
(setf (get o p) v)


16.3 アナフォリックマクロ
- aif, awhen, awhile, acond, alambda, ablock, aand
- a+, alist
=> アナフォリックマクロの定義は重複したコードになる
=> アナフォリックマクロを自動定義するマクロを作成できる
=> defanaph


On Lisp
Paul Graham

4274066371
オーム社 2007-03
売り上げランキング : 82240
おすすめ平均 star

Amazonで詳しく見る
by G-Tools
[PR]
# by fkmn | 2009-12-12 23:55 | 一人読書会
On Lisp 第15章 関数を返すマクロ
そろそろ紹介されるマクロが大きく複雑になってきて、ついていくのが少し大変になってきた。

15.2 Cdr部での再帰
- シンボルマクロが役に立つ例
- シンボルマクロを使用した場合
(defmacro alrec (rec &optional base)
"cltl2 version"
(let ((gfn (gensym)))
`(lrec #'(lambda (it ,gfn)
(symbol-macrolet ((rec (funcall ,gfn)))
,rec))
,base)))
(alrec (and (oddp it) rec) t)

- シンボルマクロを使用しない場合
(defmacro alrec (rec &optional base)
"cltl1 version"
(let ((gfn (gensym)))
`(lrec #'(lambda (it ,gfn)
(labels ((rec () (funcall ,gfn)))
,rec))
,base)))
(alrec (and (oddp it) (rec)) t) ;; シンボルマクロを使う場合に比べて、
;; rec を呼び出すための括弧が余計


15.3 部分ツリーでの再帰
- 関数生成関数を書いて、それにマクロのきれいなインタフェースをかぶせる



On Lisp
Paul Graham

4274066371
オーム社 2007-03
売り上げランキング : 82240
おすすめ平均 star

Amazonで詳しく見る
by G-Tools
[PR]
# by fkmn | 2009-12-09 23:55 | 一人読書会


とあるWebアプリケーションエンジニアの日記
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX