
G'day all. On Mon, 2009-01-19 at 19:33 +0000, Andrew Coppin wrote:
My only problem with it is that it's called Bool, while every other programming language on Earth calls it Boolean. (Or at least, the languages that *have* a name for it...)
Jonathan Cast commented:
Except C++?
And perhaps more to the point, "Boolean" is an adjective, not a noun. Therefore, it would be better reserved for a typeclass. class (PartialOrder a) => JoinSemilattice a where (||) :: a -> a -> a class (MeetSemilattice a) => BoundedJoinSemilattice a where bottom :: a class (PartialOrder a) => MeetSemilattice a where (&&) :: a -> a -> a class (MeetSemilattice a) => BoundedMeetSemilattice a where top :: a class (BoundedJoinSemilattice a, BoundedMeetSemilattice a) => Heyting a where implies :: a -> a -> a not :: a -> a not x = x `implies` bottom class (Heyting a) => Boolean a where {- the additional axiom that x || not x == top -} Cheers, Andrew Bromage