PyClips を使用して開発するのは非常に難しいと思います。Clips によってスローされる有用なエラー メッセージが、一般的な「構文エラー」メッセージに置き換えられているように見えるからです。これにより、PyClip を使用する場合、大規模なコードベースでのデバッグが非常に面倒になり、事実上不可能になります。
次の例を考えてみましょう。乗算演算子を含む非常に大きな式を書きましたが、誤って 2 番目の引数を追加するのを忘れていました。PyClips は、単に引数が不足していることを伝える代わりに、構文エラーがあることを伝えました。訂正するのに 1 秒かかるはずだったのに、間違いを探して大きな表情を探し回ったため、訂正するのに 5 分かかりました。
要約版は次のとおりです。
Clips では、役立つエラー メッセージが表示されます。
clips
CLIPS> (defrule myrule "" (myfact 123) => (bind ?prob (* (min 1 2))))
[ARGACCES4] Function * expected at least 2 argument(s)
ERROR:
(defrule MAIN::myrule ""
(myfact 123)
=>
(bind ?prob (* (min 1 2))
PyClips では、役に立たないエラー メッセージが表示されます。
python
>>> import clips
>>> clips.BuildRule('myrule','(myfact 123)','(bind ?prob (* (min 1 2)))','')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/clips/_clips_wrap.py", line 2839, in BuildRule
_c.build(construct)
_clips.ClipsError: C08: syntax error, or unable to parse expression
Clipsによってスローされた実際のエラーをPyClipsに与えるにはどうすればよいですか?