
On Dec 19, 2007, at 13:03 , Steve Lihn wrote:
In the Disadvantage section (near the end), there is an item -- hard or impossible to debug. Can anybody explain why or what it means? And how does it apply to Haskell?
In the general case, you would need to design into your DSL both ability to debug programs written in it, and ability to debug its runtime/implementation. With experience, you can make the latter easier but in the case of complex DSLs even the best runtime support can be tricky. But in Haskell, not only is your DSL implemented in Haskell but it is implemented *as* Haskell combinators, so you can use the existing Haskell debugging features, *and* the implementation behaves like any other Haskell program so you are more likely to be able to figure out what's going on inside it given a reasonable debugging environment. The problem there being that debugging support is still fairly new in GHC 6.8.x (and well-nigh nonexistent in other Haskell implementations) and evolving. -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH