#:g1: fmtの紹介

Posted 2014-01-08 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の9日目です。

fmtとはなにか

 fmtは、Alex Shinn氏作のSchemeのコンビネーター方式による書式付き出力ライブラリです。
Common LispのFORMATもびっくりの多機能さが特長です。

パッケージ情報

パッケージ名fmt
配布元サイトCombinator Formatting

 配布元に詳しいマニュアルがあります。

インストール方法

 現在、Gauche、Chicken、Racket、Scheme48等に対応しているようです。
Gaucheの場合、

make gauche && make install-gauche

で、(use text.fmt)で利用できるようになります。
他、Racketは、PLaneTで、Chickenは、eggsにパッケージが用意されています。

試してみる

 まずは、伝統のローマ数字と思いましたが、Gaucheだとそのままでは何故か使えません

(fmt #f (num/roman 12345))
;=>  "MMMMMMMMMMMMCCCXXXXV"

となる筈
他、Cのソースを整形する機能もあり、(use text.fmt.c)で利用できるようになります。

(fmt #t (c-expr '(if (if 1 2 3) 4 5)))
;>> if (1 ? 2 : 3) {
;>>     4;
;>> } else {
;>>     5;
;>> }
;=> #<undef>

Cのコードを生成する場合に便利だったりするのでしょうか。他JavaScript対応版もあり。

まとめ

 今回は、fmtを紹介してみました。
Common LispのFORMATより多機能だと思いますが、コンビネータ方式というのが馴れないとひっかかるところかもしれません。

 ちなみに私がCommon Lispに適当に移植したものがありますので興味のある方はどうぞ(割と壊れていますので修正のプルリクお待ちしています)

comments powered by Disqus