CLでSRFI-54 — #:g1

Posted 2011-12-24 10:23:00 GMT

CLでSRFI、今回は、SRFI-54の「Formatting」です。

Formattingとはなんぞやという感じですが、書式化された出力ということで、CLでいうFORMAT的なもののようです。
作者のJoo ChurlSooさんは、SRFI-86のように複雑なSRFIを割と良く作っているようですが、SRFI-54のcatもちょっと考えないと分からないようなところがあります。
catは、最初の引数以外、どういう役割で、どういう順番なのか謎に見えますが、基本的に引数の型で役割が決まるというトリッキーな指定方法のお蔭で順番は関係ないようです。
フィルター用の関数をパイプのように継げることもできたりで色々できます。

動作

(cat 129995 10 '(#\,) :sign)
;=>  "  +129,995"

(cat 1234 10)
;=>  "      1234"

(cat 1234 -10)
;=>  "1234      "

(cat 123456789 '(#\, 3) 15)
;=>  "    123,456,789"

(cat 1234 10 :sign)
;=>  "     +1234"

(cat "foo" 10 #\_ `(,#'string-upcase ,#'reverse))
;=>  "_______OOF"

(with-output-to-string (out)
  (cat "foo" out 10 #\.  (list #'string-capitalize #'reverse)))
;=>  ".......ooF"

移植について

キーワード的な役割のシンボルはキーワードシンボルにしました。

comments powered by Disqus