#:g1: eggs: describeの紹介

Posted 2014-09-23 13:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の266日目です。

eggs: describeとはなにか

 eggs: describeは、Lisp方言ではお馴染のdescribeのChicken版です。

パッケージ情報

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

インストール方法

$ sudo chicken-install describe

すれば、

(use describe)

で使えます。

試してみる

 Common Lispと同じように、(describe 調べたいオブジェクト)という感じです。

(describe describe)
;>> procedure with code pointer 7ffff3359596 of length 3
;>>  0: #<procedure (string-ref str i)>
;>>  1: #<procedure (length lst355)>
;>>  2: #<procedure (list-ref lst i)>

 Chickenは対話環境でコンマから開始されるコマンドが利用できますが、「,d」でdescribeが使えるようにもなります。

#;1> ,d describe
procedure with code pointer 7f414fb1d596 of length 3
 0: #<procedure (string-ref str i)>
 1: #<procedure (length lst355)>
 2: #<procedure (list-ref lst i)>

また、非常に長いリスト等を表示する場合には長さを限定したりもできます。

(parameterize ((describe-sequence-limit 5))
  (describe (iota 100)))
;>> list of length 100
;>>  0: 0
;>>  1: 1
;>>  2: 2
;>>  3: 3
;>>  4: 4
;>>  (95 elements not displayed)

,d コマンドの場合は、第二引数に長さを記述すれば同様の効果が得られます。

 また、set-describer!でタイプに表示関数を設定することにより表示をカスタマイズすることも可能です(詳しくはドキュメントを参照のこと)。

まとめ

 今回は、eggs: describeを紹介してみました。
~/.csircで(use describe)しておくと便利だと思います。
それはさておき、Chickenのdescribeは昔は標準機能だったような記述もポツポツ見掛けますが、分離しちゃったんでしょうか。

comments powered by Disqus