Onlisp: Macro-Defining Macros に書いてある例題は、Emacs(GNU Emacs 23.1.1 (i386-mingw-nt6.1.7600))でも使えた。長い名前をもつマクロを省略表記するための、"abbrev"というマクロ。いわゆるマクロを定義するマクロ。
- abbrev
-
(defmacro abbrev (short long) `(defmacro ,short (&rest args) `(,',long ,@args)))
- multiple-value-bind を mvbind に省略
-
(abbrev mvbind multiple-value-bind) mvbind ;mvbindを強引に使ってみた例(与えられた数の商、剰余を出力) ((lambda (x y) (labels ((devide (x y) (list (/ x y) (% x y)))) ;商、剰余のリストを返す関数 (mvbind (q r) (devide x y) (format "quotient: %d, remainder: %d" q r) ))) ; 2011割る3を試してみる 2011 3) "quotient: 670, remainder: 1"
- destructuring-bind を dbind に省略
-
(abbrev dbind destructuring-bind) dbind ;dbindを強引に使ってみた例(与えられたリストからhtmlのaタグを生成) ((lambda (lst) (dbind (title href) lst (format "<a href=\"%s\" title=\"%s\">%s</a>" href blog blog))) ;リストの要素をaタグに変換 '("title1" "http://dminor11th.blogspot.com/")) "<a href=\"http://dminor11th.blogspot.com/\" title=\"blog\">blog</a>
0 件のコメント:
コメントを投稿