[Haskell-cafe] Re: Laws and partial values
tom.davie at gmail.com
Sat Jan 24 16:31:54 EST 2009
On 24 Jan 2009, at 22:19, Henning Thielemann wrote:
> On Sat, 24 Jan 2009, Thomas Davie wrote:
>> On 24 Jan 2009, at 21:31, Dan Doel wrote:
>>> For integers, is _|_ equal to 0? 1? 2? ...
>> Hypothetically (as it's already been pointed out that this is not
>> the case in Haskell), _|_ in the integers would not be known, until
>> it became more defined. I'm coming at this from the point of view
>> that bottom would contain all the information we could possibly
>> know about a value while still being the least value in the set.
>> In such a scheme, bottom for Unit would be (), as we always know
>> that the value in that type is (); bottom for pairs would be (_|_,
>> _|_), as all pairs look like that (this incidentally would allow
>> fmap and second to be equal on pairs); bottom for integers would
>> contain no information, etc.
> Zero- and one-constructor data types would then significantly differ
> from two- and more-constructor data types, wouldn't they?
Yes, they would, but not in any way that's defined, or written in, the
fact that they have a nice property of being able to tell something
about what bottom looks like is rather nice actually.
More information about the Haskell-Cafe