[Haskell-cafe] Composition Operator

Derek Elkins derek.a.elkins at gmail.com
Tue Sep 25 01:08:34 EDT 2007

On Mon, 2007-09-24 at 19:11 -0700, Dan Weston wrote:
> Well, I did footnote in my first e-mail that:
> [1] I used the asterisk in the category name Hask* to exclude undefined 
> values or partial functions
> [Although I think I may have flipped the asterisk convention.]
> I see what you mean by const False and const True being two different 
> arrows, but now I don't know how that reconciles with the Wikipedia 
> Example 3 of http://en.wikipedia.org/wiki/Initial_object
> "In the category of pointed sets (whose objects are non-empty sets 
> together with a distinguished element; a morphism from (A,a) to (B,b) 
> being a function f : A ? B with f(a) = b), every singleton is a zero 
> object [i.e. both initial and final]."
> I thought I was being safe by "distinguishing" () as my distinguished 
> element. Where did I go wrong?

() is terminal, not initial.  There exists a unique function to it
(ignoring bottoms) from anything, namely, const ().  A "point" of A
categorically, is just a function from the terminal object to A, () ->
A.  For the notion of "pointed" that you want, the important thing is
that f = g :: A -> B iff for all k :: () -> A, f . k = g . k.  I.e. a
function is completely determined by its action on points.

More information about the Haskell-Cafe mailing list