Specific denotations for pure types

Jake McArthur jake at pikewerks.com
Mon Mar 23 10:54:38 EDT 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Conal Elliott wrote:
| Consider
|     big :: Int
|     big = 2147483647
|     dodgy :: Bool
|     dodgy = big + 1 > big
|     oops :: ()
|     oops =  if dodgy then () else undefined
|
| Assuming compositional semantics, the meaning of oops depends on the
| meaning of dodgy, which depends on the meaning of big+1, which is
| implementation-dependent.  So a semantic domain for Bool and even ()
| would have to include the machine-dependence of Int, so that oops could
| mean a function from MachineInfo that returns () sometimes and bottom
| sometimes.  If the denotations (semantic domains) for Bool and () didn't
| include this complexity, they wouldn't be rich enough to capture the
| machine-dependence of dodgy and oops.

Since Bool's constructors are exported, we can define (>) anywhere, so I
don't think it makes sense to consider (>) a part of Bool's semantics, no?

- - Jake McArthur
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAknHoq4ACgkQye5hVyvIUKkRugCghgh6qNqmpWvD5SQYX/8PzUws
0Y8AoM3qJS5RIzoEFbD2aN1rR6EdJWh9
=ozCQ
-----END PGP SIGNATURE-----


More information about the Haskell-prime mailing list