[Haskell-cafe] Fwd: Monads, do and strictness

David Barbour dmbarbour at gmail.com
Sat Jan 21 21:18:09 CET 2012

`undefined` is not a value in any domain. It isn't a value at all. It's
certainly not part of my monad language or algebra. Up to the semantic
level of comparing observable and legally defined behaviors, we can have
the identity law. That's sufficient for the letter of the law, even if not
ideal from Haskell's operational perspective.

Implicit use of laziness or undefined to model and reason about data or
algebras is a mistake that mixes semantic layers. Even in Haskell. There's
a reason every robust library for processing signals or streams will model
them explicitly.



On Sat, Jan 21, 2012 at 11:22 AM, Roman Cheplyaka <roma at ro-che.info> wrote:

> * David Barbour <dmbarbour at gmail.com> [2012-01-21 11:09:43-0800]
> > Logically only has meaning when `=` applies to values in the domain.
> > `undefined` is not a value in the domain.
> >
> > We can define monads - which meet monad laws - even in strict languages.
> In strict languages 'undefined' is not a value in the domain indeed, but
> it is in non-strict languages, exactly because they are non-strict.
> I think that's what Robert Harper meant by saying that Haskell doesn't
> have a type of lists, while ML has one [1].
> [1]:
> http://existentialtype.wordpress.com/2011/04/24/the-real-point-of-laziness/
> --
> Roman I. Cheplyaka :: http://ro-che.info/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120121/6a2d919c/attachment.htm>

More information about the Haskell-Cafe mailing list