Even something as mundane as Data.Bool is beautiful, defining False in terms of bottom.
I love to look at unicode, but is it a pain to type it in practice, even given emacs?
I love to look at unicode, but is it a pain to type it in practice, even given emacs?
What happens in Data.Bool is that we have the function from values to types `T` such that `T true` and `T false` are types equal to top and bottom respectively. This value-to-type encoding is called a "universe" and allows us to talk about propositions which are based on boolean function results like
theorem1 : T (1 - 1 == 0)
which is somewhat interestingly different from theorem2 : 1 - 1 = 0
in that the first will reflect upon the definitions of the (recursive) functions (-) and (==) while the second reflects only upon the definition of (-).[0] http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.Unicod...