--QKdGvSO+nmPlgiQ/
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable

Mon Sep 27 1999, S. Alexander Jacobson ->
> On Tue, 28 Sep 1999, Adrian Hey wrote:
>=20
> > So (a && b) =3D (b && a) is invalid
>=20
> && has type
> &&::Boolean->Boolean->Boolean
>=20
> _|_ is not of type Boolean.  So, if you pass && a value of type _|_,=20
> you have violated its type requirements (precondition) and should not=20
> expect expect a lawful result. =20

Oh, but _|_ is a member of the type Boolean.=20
_|_ is a member of all types.

For instance, I can write the following:

bottom :: a
bottom =3D bottom

Then bottom is equal to _|_ and=20
bottom && bottom :: Bool
and
(bottom && False) is not equal to (False && bottom)
(at least not in Haskell with the specification of && and pattern matching)

        n.

--=20
[ http://www.dtek.chalmers.se/~d95mback/ ] [ PGP: 0x453504F1 ] [ UIN: 44394=
98 ]
    Opinions expressed above are mine, and not those of my future employees.

--QKdGvSO+nmPlgiQ/
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia

iQCVAwUBN/CsXRl6xbhFNQTxAQFi0wP/RWh6ijuJvHaUI4NwGVleVqy9IdvxIoam
4S7FyKPnsIqsbs+nkfcT2e1V8DpinKr9ns3Iv4hhaF/8KDsxeGPkHh3XBxcZGosn
8xppxASplbXnfdjq4ABpOCSQTKZeP6lBLxqaE4bQMTcxC+M+zG2QomUk6XJZTdkX
hZiL6jXaT+w=
=JvdP
-----END PGP SIGNATURE-----

--QKdGvSO+nmPlgiQ/--



Reply via email to