4

私はLISPにとても慣れていません。allegro-clを使用しています。定義してロードした関数を呼び出すのに問題があります。たとえば、特定のパッケージ内のすべてのメソッドを一覧表示したり、変数のみを一覧表示したり、パッケージ名を一覧表示したりするなど、定義したものを参照する方法を知りたいです。

4

3 に答える 3

4

私はAllegroCLを使用していないので、CL自体がこれに提供するツールについてのみ説明できます。AllegroCLIDEがこのタスクに何を提供するかを確認することをお勧めします。

関数LIST-ALL-PACKAGESを使用して、すべてのパッケージのリストを取得できます。このように使用して、名前を印刷できます。

(dolist (p (list-all-packages)) (write-line (package-name p)))

CLパッケージはシンボル(つまり名前)のコレクションであり、これらの名前に関連付けられたオブジェクトではありません。それらの名前をさらに照会して、そのシンボルに定義されている値や関数があるかどうかを確認する必要があります。DO-SYMBOLSを使用して、パッケージ内のすべてのシンボルをループできます。これにより、現在のパッケージのすべてのシンボルが印刷されます。

(do-symbols (s) (print s)

これは機能のみです:

(do-symbols (s) (when (fboundp s) (print s)))

これは、ホームパッケージが現在のパッケージである関数のみです。

(do-symbols (s)
  (when (and (eq (symbol-package s) *package*)
             (fboundp s))
    (print s)))
于 2011-01-24T18:28:31.277 に答える
3

名前の一部を覚えている場合は、いつでもAPROPOS(特定のパッケージに限定されている可能性があります)を使用してフルネームを見つけることができます。

于 2011-01-25T10:06:12.247 に答える
0

私は同じ問題に遭遇しました。ドキュメントを読んだ後、REPLに入力された定義を思い出す方法はないと思いました。

この問題を回避するために、私は常にエディターウィンドウに入力します(存在しない場合はCtrl + N)。このようにして、定義の入力や編集などを非常に便利に行うことができます。定義を評価する必要がある場合は、Ctrl + Eを押して増分評価を行います([ツール]メニューの他のオプションを参照)。左側にリスナーウィンドウ、右側にエディタウィンドウを配置して、入力と出力を確認します。

いくつかのバグを引き起こす可能性のある小さな問題がまだあります。定義に変更を加えた後で定義を評価するのを忘れた場合、古い定義はREPLに残ります。Ctrl+Eを押し続けます。

複数のファイルを開いていて、ソースファイルの1つで定義を見つけたい場合は、[検索]>[適切]を使用できます。

于 2011-08-05T08:57:56.757 に答える