Skip to main content
22 events
when toggle format what by license comment
Mar 12, 2022 at 9:22 audit First answers
Mar 12, 2022 at 9:22
Mar 9, 2022 at 2:24 audit First answers
Mar 9, 2022 at 2:24
Mar 8, 2022 at 3:10 audit First answers
Mar 8, 2022 at 5:55
Mar 7, 2022 at 4:55 audit First answers
Mar 7, 2022 at 5:33
Mar 3, 2022 at 11:16 audit First answers
Mar 3, 2022 at 11:16
Feb 27, 2022 at 14:24 audit First answers
Feb 27, 2022 at 15:11
Feb 24, 2022 at 7:51 audit First answers
Feb 24, 2022 at 7:51
Feb 23, 2022 at 23:40 audit First answers
Feb 23, 2022 at 23:40
Feb 23, 2022 at 8:39 audit First answers
Feb 23, 2022 at 8:50
Feb 23, 2022 at 4:24 audit First answers
Feb 23, 2022 at 6:17
Feb 20, 2022 at 10:44 audit First answers
Feb 20, 2022 at 10:44
Feb 19, 2022 at 15:13 audit First answers
Feb 19, 2022 at 15:14
Feb 19, 2022 at 11:19 audit First answers
Feb 19, 2022 at 11:20
Feb 16, 2022 at 11:23 comment added Ben @JamesStrieter You could, although "having zero arity" isn't a very distinctive feature. Every member of the kind Bool is also zero arity (True and False, lifted to type-level with the DataKinds extension). Any enum-like type will similarly contain only zero-arity things. Type is a much better name, since that describes what it means and what is unique about it: every type-level thing whose kind is Type can be used as the type of things at the term level, while no type-level thing with a different kind can be used that way.
Feb 16, 2022 at 7:36 comment added James Strieter That makes sense. I can see why the community might move away from the * notation in the future. Personally I think it would be more readable to use the number 0 to denote the most basic kind, because it is 0-arity.
Feb 14, 2022 at 22:21 comment added Ben @JamesStrieter k is a variable, you can instantiate it to any kind you like: *, or * -> *, or (* -> *) -> *, etc. * is one specific concrete kind. It doesn't stand as a placeholder to be instantiated by something else, it is the most basic kind; it is also called Type, now, but it always acted like a basic name like Type, not like a wildcard or operator as the * symbol might suggest.
Feb 14, 2022 at 11:00 comment added James Strieter @Ben I have a question about this part: "PolyKinds adds kind variables that work exactly the same way type variables work. Now we can have kinds like forall k. (* -> k) -> k." Forall k is universal k. And * is not constrained, although at least 1 person has written that * is not a wildcard either. What is the difference between * and forall k?
Feb 13, 2022 at 0:44 comment added Ben @danidiaz Yeah, I vaguely follow the developments in that area as they appear in GHC release notes. But I've never really had to use unlifted/unboxed things, so I don't have a good grasp of how it all fits together; I just know where to start reading when I do need to get a better grasp.
Feb 13, 2022 at 0:42 history edited Ben CC BY-SA 4.0
added 587 characters in body
Feb 12, 2022 at 14:34 vote accept James Strieter
Feb 12, 2022 at 13:46 comment added danidiaz Another source of kinds are the kinds of types whose values might be "unlifted" or "unboxed". The kind * a.k.a. Type is the kind of types like Int whose values are "lifted", that is, that can be pending computations (thunks) or even undefined. But Haskell also has types like Int# which are actual "machine ints" that can't be thunks. And each possible in-memory representation has its own kind. This aspect of GHC is still evolving. downloads.haskell.org/~ghc/9.0.1/docs/html/users_guide/exts/…
Feb 12, 2022 at 11:10 history answered Ben CC BY-SA 4.0