nptclのブログ

Common Lisp処理系nptの開発メモです。https://github.com/nptcl/npt

Common Lispから日本語のDictionaryを見る

以前の投稿 ANSI Common LispのDictionaryだけ翻訳したい - nptclのブログでは、 Dictionaryだけを日本語に翻訳して行こうと話しましたが、 残念ながらまだ全部は翻訳できていません。
とはいえ現段階では70%くらい完了しました。

これが終わったらnptをいろいろいじる予定ですが、 CLOSとかMOPとかを完璧にしたいので、 7章「オブジェクト」に引き続き、 4章の「型とクラス」の内容もDictionary含めて全部翻訳してしまいました。
よかったら見てみて下さい。

トップはここ。

https://nptcl.github.io/npt-japanese/md/ansicl/index.html

まあそれはいいとして本題に入ります。
Common Lispから、この日本語訳のDictionaryを参照できるようにしました。
例えば、substって何だったかなあ?というときに 日本語の説明を表示することができます。

配布はここ。

https://github.com/nptcl/npt-japanese

  • src/npt-japanese.lisp

上記のファイルをloadするだけで使えます。
asdファイルも用意していますので、 asdf:load-systemなんかでも使えると思います。

読み込みはこんな感じ。

* (load #p"npt-japanese.lisp")
* (use-package 'npt-japanese)

ためしにsubstの説明を見てみます。

* (docjp subst)
Function SUBST, SUBST-IF, SUBST-IF-NOT,NSUBST, NSUBST-IF, NSUBST-IF-NOT

## 構文
subst new old tree &key key test test-not => new-tree
subst-if new predicate tree &key key => new-tree
subst-if-not new predicate tree &key key => new-tree
nsubst new old tree &key key test test-not => new-tree
nsubst-if new predicate tree &key key => new-tree
nsubst-if-not new predicate tree &key key => new-tree

## 引数と戻り値
new - オブジェクト
old - オブジェクト
predicate - 関数名のシンボルか、1つの引数をとりgeneralized-booleanを返却する関数
tree - ツリー
test - 2つの引数を取りgeneralized-booleanを返却する関数の指定子
test-not - 2つの引数を取りgeneralized-booleanを返却する関数の指定子
key - 1つの引数を取りgeneralized-booleanを返却する関数の指定子、またはnil
new-tree - ツリー
・・・

出力が大量に出るので、 最初の方はスクロールさせないと見えません。
moreとかlessみたいに表示を止めたらいいんでしょうけど ごめんなさい。
そこまでしません。

候補が2つ以上ある場合は、どれが見たいのか聞かれます。

* (docjp pathname)
PATHNAME FUNCTION
PATHNAME SYSTEM-CLASS

下の方が見たいというときは次のようにしてください。

* (docjp pathname system-class)

公開しているインターフェースは次の2つだけです。

(defmacro docjp (&rest args) ...)
(defun doc-japanese (&rest args) ...)

docjpは、単にdoc-japaneseを呼び出してるだけです。
いちいちquoteするのが面倒だったからマクロで囲みました。
実行例は次の通り。

* (doc-japanese 'subst)

分ってる問題として表とリストの出力はガタガタです。
でもちょっと確認するくらいならこれで十分かな。