3

Lisp の宿題の一環として、見つけたすべての述語に対して apply または funcall を使用します。私の質問 (コースワークで明らかになった) は、次のとおりです。引数のリストで述語を見つけたとき、どうすればわかりますか? 私はいくつかの基本的なグーグル検索を行いましたが、これまでのところ何も思いつきません。割り当てに Lisp リファレンスを使用することは許可されています - 優れたオンライン リソース (およびおそらくその中の特定のページ) へのポインタでさえ素晴らしいでしょう!

4

2 に答える 2

1

標準参照はCommon Lisp Hyperspecです。

割り当てが正確にはわかりませんが、各引数を可能な述語のリストと照合するか、functionp渡されたすべての関数が述語であると想定できる場合は、引数が関数 ( ) であるかどうかを判断できます。

于 2010-03-30T00:07:58.343 に答える
1

Svante の回答に追加するには:静的に型付けされた言語でできるように、特定の関数が述語であることを確認する方法はないと思います。sb-introspect:function-arglistほとんどの CL 実装は、1 つの引数のみが受け入れられることを確認できるようにするSBCL のようなイントロスペクション関数を提供します。関数の動作が正常であるという保証はありませんが、何もしないよりはましかもしれません。

于 2010-03-30T11:35:00.967 に答える