fixedpoint.jp


A Declarative Debugger for a Logical-Functional Language (2009-01-11)

"A Declarative Debugger for a Logical-Functional Language" という論文を読みました。

NUE-Prolog という Prolog 処理系の説明から始まります。関数型の関数呼び出しを論理型のパターンマッチに統合して扱うことができるというもので、関数型の遅延評価もサポートしているとのことです。

本題としては、ステップ実行やトレースという手続き型向けの方法のかわりに、oracle を参照して proof tree を探索し誤りを見つけるという手法が説明されています。文中では oracle を得るためにデバグを行うプログラマに対話的に問い合わせるという形になっています。デバグの対象になるプログラムの例は "Algorithmic Program Debugging" からとられているようです。Declarative debugging について知らなくてもこれらの例のおかげで分かりすいです。ただし実装についてはほとんど触れられていません。

参考

http://www.cs.mu.oz.au/~lee/papers/dd.html
上の論文の著者によるページ。
Haskell Debugging Technologies
上の論文の著者が開発に参加しているデバッガが含まれている。
Algorithmic and Automatic Debugging
Declarative debugging を含む。

© 2006-2023 fixedpoint.jp