[Haskell-cafe] Re: Map constructor in a DSL

Dupont Corentin corentin.dupont at gmail.com
Thu Oct 28 06:09:05 EDT 2010

Thank you for your rich responses.

Indeed I think I miss some thinks in my DSL, that would make things easier
to deal with lists and first class functions.
I don't really know what for now.
Perhaps a List Constructor? Or a constructor on functions like yours Ryan?
EAp :: Exp ref (a -> b) -> Exp ref a -> Exp ref b
It's from which DSL? It is accessible on the net?

Chris suggested me that I can only define the Foldr constructor and deduce
Map from it.
But maybe I have to add a List constructor for that.

But in the suggestions from Ryan and Brandon I don't understand why I should
add an extra type parameter and what it is!

Steffen: Wow nice. I'll integrate that ;)

I'm also looking at the Atom's DSL to get inspiration.
Something I don't understand in it is that it has two languages, on typed:

data E a where
  VRef    :: V a -> E a
  Const   :: a -> E a
  Cast    :: (NumE a, NumE b) => E a -> E b
  Add     :: NumE a => E a -> E a -> E a

And, along with it, an untyped counterpart:

-- | An untyped term.
data UE
  = UVRef UV
  | UConst Const
  | UCast  Type UE
  | UAdd   UE UE

What that for? What's the use of having beautiful GADT if you have to
maintain an untyped ADT aside??

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20101028/3a21d385/attachment.html

More information about the Haskell-Cafe mailing list