Re: [Haskell-cafe] question about "singletons"

2013-06-02 Thread TP
Thanks Richard, now I have my answers. Richard Eisenberg wrote: > - The type system of Haskell is based on theoretical work that resolutely > assumes that types of non-* kind are uninhabited. While it is possible to > stretch imagination to allow types like 'Zero to be inhabited, the > designers

Re: [Haskell-cafe] question about "singletons"

2013-06-01 Thread wren ng thornton
On 6/1/13 3:18 PM, TP wrote: > In other words, bottom can be an inhabitant of a concrete type, not a type > constructor, which I can understand. But a type of kind Nat is a concrete > type, so why bottom cannot be an inhabitant of this type? The technical term is "proper type". That is, types are

Re: [Haskell-cafe] question about "singletons"

2013-06-01 Thread Richard Eisenberg
On Jun 1, 2013, at 8:18 PM, TP wrote: > > In other words, bottom can be an inhabitant of a concrete type, not a type > constructor, which I can understand. But a type of kind Nat is a concrete > type, so why bottom cannot be an inhabitant of this type? > >> We also have the nice maxim that ev

Re: [Haskell-cafe] question about "singletons"

2013-06-01 Thread TP
Thanks Richard for your detailed answer. Please find my reply below (note I have rearranged some of your paragraphs). Richard Eisenberg wrote: > * Types at kind other than * do not have any inhabitants -- in fact, some > people would hesitate to call type-like things at kind other than * types! >

Re: [Haskell-cafe] question about "singletons"

2013-05-31 Thread Richard Eisenberg
#x27;re asking all the right questions! Richard -Original Message- From: haskell-cafe-boun...@haskell.org [mailto:haskell-cafe-boun...@haskell.org] On Behalf Of TP Sent: 31 May 2013 13:58 To: haskell-cafe@haskell.org Subject: [Haskell-cafe] question about "singletons" Hi all,

[Haskell-cafe] question about "singletons"

2013-05-31 Thread TP
Hi all, Following a discussion on Haskell Cafe some time ago (1), Roman C. wrote: """ On the other hand, the type 'Succ 'Zero has kind 'Nat and doesn't have any inhabitants — only types of kind * do. """ Indeed, this is what seems to occur in the following example: --- {-#