#:g1: eggs: anaphoraの紹介

Posted 2014-07-16 07:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の197日目です。

eggs: anaphoraとはなにか

 eggs: anaphoraは、Juergen Lorenz氏作のChickenのアナフォリックマクロのライブラリです。

パッケージ情報

パッケージ名eggs: anaphora
Chicken eggs:anaphora - The Chicken Scheme wiki

インストール方法

$ sudo chicken-install anaphora

とすれば、

(use anaphora)

(require-extension anaphora)

で利用できるようになります。

試してみる

 お馴染のaifの他に、n-なんとか(namedのn)という構文が揃っています。
n系のマクロは殆どif-let等と同じかと思います。

(aif foo: it -1)
;=> foo:

(nif foo? foo: foo? -1) ;=> foo:

他、下記の様なバリエーションが用意されています。

 また、eggs: anaphoraでは定義用の構文も用意されていて、決まったパタンなら簡単に定義することが可能です。

(define-anaphor abegin begin first:)

(abegin (list 1 2 3 4) (set! it (cdr it)) (set! it (cdr it)) (set! it (cdr it)) it) ;=> (4)

 その他、

等々、アナフォリックマクロの範疇なのか微妙なものもあり。

まとめ

 今回は、eggs: anaphoraを紹介してみました。
名前からしてCommon Lispの同名のライブラリの移植版かと思いましたが、そうではなく独自のライブラリでした。
Chickenには割合にCommon Lisp的なライブラリが多いですね。

comments powered by Disqus