Haddock displays kind annotations oddly. At a guess (which could well be off base; I'm still rather weak on this stuff), Spock has PolyKinds enabled, so an explicit (x :: *) kind annotation must be preserved as an override to the default of allowing any kind; if PolyKinds is not enabled, then * is the default kind and wouldn't be annotated. (Reader beware: * is not a wildcard/"match any", it is specifically the kind of inhabited boxed types!)

On Fri, Jan 13, 2017 at 3:31 AM, Haiwei Zhou <highfly22@gmail.com> wrote:
Hi,

  I am reading the document of spock-0.11, and found two strange definitions in the Web.Spock.

````
type Var a = Path ((:) * a ([] *)) Open

var :: (Typeable * a, PathPiece a) => Path ((:) * a ([] *)) Open

````

What's the meaning of the star between Typeable and a ? 

The kind of Typeable is * -> *. I cannot understand why the Typeable in the var prototype takes two kinds.

In the Web.Routing.Combinators of reroute-0.4, those are defined as following:

````
type Var a = Path (a ': '[]) Open

var :: (Typeable a, PathPiece a) => Path (a ': '[]) Open

```` 

Why there are two difference definition about the same thing?

Thanks,
Haiwei

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.



--
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net