#:g1: date-literalsの紹介

Posted 2014-06-22 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の174日目です。

date-literalsとはなにか

 date-literalsは、Arto Bendiken氏作のChickenで日付オブジェクトのリテラル表記を可能にするライブラリです。

パッケージ情報

パッケージ名date-literals
Chicken eggs:Date-literals - The Chicken Scheme wiki

インストール方法

$ sudo chicken-install date-literals

すれば、

(use date-literals)

(require-extension date-literals)

で使えるようになる筈なんですが、形式が古いのか何なのか自分の手元では上手く行きませんでした。
ライブラリのファイルで date-literals.so というのを作法に従って date-literals.import.so にしたら読み込むことは読み込むのですが…

試してみる

 srfi-19のdateのリテラル表記を提供するもので、#@から始まる表記がdateオブジェクトになります。

(date? #@2014-06-22T13:43:59+0900)
;=> #t

(make-date 0 0 0 0 1 1 2000 0) ;=> #@2000-01-01T00:00:00Z

(date->time-utc #@2000-01-01T00:00:00Z) ;=> #,(time utc 0 946684800)

Chickenの場合、標準で、SRFI-10が有効になっているようなので、そんなに必要もないでしょうか。
ただSRFI-10の形式だと

#,(date 644000000 53 53 14 22 6 2014 32400 JST #f #f #f #f)

のように長いのでdate-literalsの方が可読性は高いかなとは思います。

 ちなみにChickenでのリーダーマクロですが、#から始まるものは、

(set-sharp-read-syntax! #\@ read-date-literal)

のように簡単に定義可能なようです。

まとめ

 一発ネタのライブラリでしたが、Chickenでもリーダーマクロを定義して使ったりするんですね。

comments powered by Disqus