Hello Steffen,
can you compile AwesomePrelude?
I've got error messages (see below).
By the way, I've looked at some DSLs made in Haskell, if I don't mistake there are lots of similarities between them.
There similarities could be put in a library to help the implementors of a DSL, more or less like AwesomePrelude.
Is there already packages on Hackage dealing with that?
Cheers,
Corentin
AwesomePrelude compilation error:
I'm using GHC 6.12.1.
> cd tomlokhorst-AwesomePrelude-9819315
> cabal install
(...)
Warning: Lang.Haskell: Instances of type
and data families are not yet supported. Instances of the following
families will be filtered out: H
Then, when trying with a very simple GATD in GHCI, I've got:
<interactive>: HSAwesomePrelude-0.1.0.o: unknown symbol `AwesomePreludezm0zi1zi0_
I think you would love to have a look at AwesomePrelude[1] or a fork
of AwesomePrelude using associated types[2]
Some more background information by Tom Lokhorst [3][4].
[1] http://github.com/tomlokhorst/AwesomePrelude
[2] http://github.com/urso/AwesomePrelude
[3] http://tom.lokhorst.eu/2009/09/deeply-embedded-dsls
[4] http://tom.lokhorst.eu/2010/02/awesomeprelude-presentation-video
On 28 Okt., 12:09, Dupont Corentin <corentin.dup...@gmail.com> wrote:
> 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
> etc.
>
> And, along with it, an untyped counterpart:
>
> -- | An untyped term.
> data UE
> = UVRef UV
> | UConst Const
> | UCast Type UE
> | UAdd UE UE
> etc.
>
> What that for? What's the use of having beautiful GADT if you have to
> maintain an untyped ADT aside??
>
> Corentin
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-C...@haskell.orghttp://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe