On Tue, Mar 03, 2009 at 01:53:44AM -0500, wren ng thornton wrote:
> If you're just wanting to build Exprs, then the canonical solution is to 
> use ':' as in (:>), (:>=), (:==), (:/=), (:<=), (:<). The colon is 
> considered a "capital symbol" and so it's what you use as the first letter 
> of symbolic constructors. For symmetry, many folks will ad another colon at 
> the end as well.
>
>   > data Expr = Const Integer | Expr :+: Expr | Expr :*: Expr | Expr :>: 
> Expr | ...
>

Alas, in several instances (too long to give here) it's impractical to
write the DSL just as constructors--several of the operators have to
do nontrivial computation.  (Plus, I'd still call the :*: solution
ugly, personally.) Is it possible to do better?

AHH

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to