Hello,

I'm working on a prototype edsl (my first one), and I was wondering if there are any resources that discuss pros and cons of various implementation issues?  I'm trying to decide what should be included in the edsl vs. re-using the meta language implementations (e.g. let-binding, lambdas).  Most of the examples I've found are for full DSL's, not EDSL's, so it's not clear what the best approach is.  The LLVM interface is sort of close to what I intend, except it creates a very imperative style whereas I'm aiming for something more functional.

A little background: I decided on a dsl because I intend to make heavy use of Haskell functions from Data.List and Control.Monad.  If I made a full DSL I would need to re-implement much of that functionality, so I thought it would be more sensible to use an edsl.

Any advice or references would be very much appreciated.

Best,
John