Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
hask [2015/10/10 20:04] nikolaj |
hask [2015/12/08 19:03] nikolaj |
||
---|---|---|---|
Line 12: | Line 12: | ||
==== Discussion ==== | ==== Discussion ==== | ||
- | With $\to$ and $\times$ etc., Hask is //almost// Cartesian closed. A particular problem is the polymorphic term 'undefined', which is defined to be term of every type. It prevents, for example, initial objects (i.e. there no analog to the "empty set"). Or when it comes to setting up the categorical product, the projections $\pi_1,\pi_2$ couldn't distinguish between $'(undefined,undefined)'$ and just $\text{undefined}$, spoiling uniqueness. See [[http://www.haskell.org/haskellwiki/Hask|Hask]] for more examples. | + | With $\to$ and $\times$ etc., Hask is //almost// Cartesian closed. A particular problem is the polymorphic term 'undefined', which is defined to be term of every type. It prevents, for example, initial objects (i.e. there no analog to the "empty set"). Or when it comes to setting up the categorical product, the projections $\pi_1,\pi_2$ couldn't distinguish between $'(\text{undefined},\text{undefined})'$ and just $\text{undefined}$, spoiling uniqueness. See [[http://www.haskell.org/haskellwiki/Hask|Hask]] for more examples. |
Hask is the largest category of types in Haskell but you can find more well behaved categories. See also the [[http://hackage.haskell.org/package/category-extras|category-extras]] package. | Hask is the largest category of types in Haskell but you can find more well behaved categories. See also the [[http://hackage.haskell.org/package/category-extras|category-extras]] package. |