#:g1: aproposの紹介

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

(LISP Library 365参加エントリ)

 LISP Library 365 の183日目です。

aproposとはなにか

 aproposは、Kon Lovett氏作のLisp方言では古くからお馴染のユーティリティである、aproposのChicken版です。

パッケージ情報

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

インストール方法

すれば、

(use apropos)

(require-extension apropos)

試してみる

 使い方はシンプルに

(apropos 'car)
;>> car                                 procedure (p)
;>> car+cdr                             procedure (pair221)
;>> set-car!                            procedure (x289 y290)
;>> type-checks#check-cardinal-fixnum   procedure (loc66 obj67 . args68)
;>> type-checks#check-cardinal-integer  procedure (loc86 obj87 . args88)
;>> type-checks#check-cardinal-number   procedure (loc106 obj107 . args108)
;>> type-errors#error-cardinal-fixnum   procedure (loc321 obj322 . tmp320323)
;>> type-errors#error-cardinal-integer  procedure (loc353 obj354 . tmp352355)
;>> type-errors#error-cardinal-number   procedure (loc289 obj290 . tmp288291)

(apropos '(seq "car" eos)) ;>> car procedure (p)

という感じです。
シンボル以外にも、irregex形式で正規表現による検索も可能です。結果の表示は、

名前 種類 関数の引数
という形式で表示されます。引数の名前に付いている数字が消えれば、もうちょっと親切な気もしますが、馴れれば問題ないのでしょう。

関連

以前紹介したことがあるような気もするなと思って振り返ってみるとaproposではなくoblistの方でした。

 ちなみにGaucheでは標準でaproposが使えるようです。

(apropos '^) 
;>> ^                              (gauche)
;>> ^-generator                    (gauche)
;>> ^_                             (gauche)
;>> ^a                             (gauche)
;>> ^b                             (gauche)
;>> ^c                             (gauche)
;>> ^d                             (gauche)
;>> ^e                             (gauche)
;>> ^f                             (gauche)
;>> ^g                             (gauche)
;>> ^h                             (gauche)
;>> ^i                             (gauche)
;>> ^j                             (gauche)
;>> ^k                             (gauche)
;>> ^l                             (gauche)
;>> ^m                             (gauche)
;>> ^n                             (gauche)
;>> ^o                             (gauche)
;>> ^p                             (gauche)
;>> ^q                             (gauche)
;>> ^r                             (gauche)
;>> ^s                             (gauche)
;>> ^t                             (gauche)
;>> ^u                             (gauche)
;>> ^v                             (gauche)
;>> ^w                             (gauche)
;>> ^x                             (gauche)
;>> ^y                             (gauche)
;>> ^z                             (gauche)
;>> define-^x                      (gauche)

今回紹介のaproposと似た感じで正規表現オブジェクトを指定して検索可能です。

まとめ

 今回は、aproposを紹介してみました。
Common Lispを書き始めた頃は、こんな関数使わないだろうと思っていましたが、割合に使っています。
Scheme畑だとどんな感じなんでしょう。

comments powered by Disqus