[Haskell-cafe] What extension do I need to write "type Job = Map k a"?

Daniel Peebles pumpkingod at gmail.com
Wed Jun 13 15:15:14 CEST 2012

That doesn't require existential quantification, but it'll need Rank-2
types if you ever do anything with Job. Unfortunately, a universally
quantified Job like what you wrote (or what Magicloud seems to want) is
only inhabited by the empty Map.

An existentially quantified Job, as you might get with

data Job = forall k a. Job (Map k a)

does let you wrap up any Map containing anything in it, but unfortunately
the only thing you can do with that map afterwards is ask for "structural"
properties about it, like whether it's empty or how many elements it has in
it. You could ask to enumerate the elements in it, but you wouldn't be able
to touch any of them because you wouldn't know what their types were.

So I'm not really sure how to interpret the question. Was the goal to have
a heterogeneous Map, maybe? Or just to avoid having to type type variables
all over the place? Both of those are possible but require a bit more
sophistication with types.


On Wed, Jun 13, 2012 at 7:32 AM, Ismael Figueroa Palet <ifigueroap at gmail.com
> wrote:

> Do you want to hide the specific types of the job? Presumably to then
> define a type JobList = [Job] ?
> You can do that with the ExistentialQuantification extension.
> type Job = forall k a. Map k a
> type JobList = [Job]
> ??
> Note you can't unpack the types k a once you have hidden them. But the
> typechecker can use it to ensure some static property.
> Also you could use unsafeCoerce to do some casts, but *only if you are
> *sure* that things will go OK*.
> 2012/6/13 Magicloud Magiclouds <magicloud.magiclouds at gmail.com>
>> Hi,
>>  I've forgotten this.
>>  This is OK:
>> type Job k a = Map k a
>>  And this is OK:
>> {-# LANGUAGE RankNTypes #-} -- or LiberalTypeSynonyms?
>> type Job = forall a. forall k. Map k a
>>  Then how to write it like this?
>> type Job = Map k a
>> --
>> 竹密岂妨流水过
>> 山高哪阻野云飞
>> And for G+, please use magiclouds#gmail.com.
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
> --
> Ismael
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120613/26e4ad99/attachment.htm>

More information about the Haskell-Cafe mailing list