Re: [Haskell-cafe] N and R are categories, no?

2007-03-16 Thread Jules Bean

Dominic Steinitz wrote:

I haven't formally checked it, but I would bet that this endofunctor
over N, called Sign, is a monad:



Just to be picky a functor isn't a monad. A monad is a triple consisting of a 
functor and 2 natural transformations which make certain diagrams commute.


  


Whilst that's true, the statement 'T is a monad' has a perfectly 
sensible meaning. It means there exist two natural transformations 
which make T a monad. This is often expressed as 'T is monadic' which, 
in turn, is sometimes more concretely defined as 'T has a left adjoint, 
such that the adjunction is monadic'.


If you are looking for examples, I always think that a partially ordered set 
is a good because the objects don't have any elements. 
Since we're playing 'pedantry' games, objects in categories don't have 
elements :P However if you take 'element' to mean 'morphism from the 
terminal object' then neither R nor N have terminal objects.


Certainly I'd agree that partial orders probably aren't very interesting 
categories to look for monads in.


Jules
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] N and R are categories, no?

2007-03-15 Thread Ulf Norell

On 3/15/07, Steve Downey [EMAIL PROTECTED] wrote:


EOk, i'm trying to write down, not another monad tutorial, because I
don't know that much yet, but an explication of my current
understanding of monads.

But before I write down something that is just flat worng, I thought
I'd get a cross check. (and I can't get to #haskell)

Monads are Functors. Functors are projections from one category to
another such that structure is preserved. One example I have in mind
is the embedding of the natural numbers into the real numbers. The
mapping is so good, that we don't flinch at saying 1 == 1.0.



Monads are endofunctors (functors from one category to itself). This is easy
to see from the type of join:

join : m (m a) - m a

For Haskell monads the category is the category of Haskell types and Haskell
functions. In this category N and R are objects, so you'll get the wrong
idea trying to see them as categories.

/ Ulf
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] N and R are categories, no?

2007-03-15 Thread Nicolas Frisby

That said, N and R are indeed categories; however, considering them as
categories should be carefully interlaced with your intuitions about
them as types.

I haven't formally checked it, but I would bet that this endofunctor
over N, called Sign, is a monad:

 Sign x = x + x
 Pos = injectLeft
 Neg = injectRight

 unit = Pos
 join (Pos (Pos n)) = Pos n
 join (Pos (Neg n)) = Neg n
 join (Neg (Pos n)) = Neg n
 join (Neg (Neg n)) = Pos n

Pos and Neg are just labels for sign. I'm assuming N is the naturals,
not the integers; thus this monad might actually be useful :). Also
note that this means there is not necessarily a mapping from F x - x.
Neg 3 should not necessarily map to 3. Also, this structure is
probably satisfies many more laws than just the monad laws--e.g.
monoids or monoidals.

So while it might not always make sense to consider N and R as
categories when learning about category theory and Haskell, it might
be helpful to learn about monads (and other notions) in categories
simpler than the Fun category of functional types and partial
functions--N and R are could be good categories for such learning.
Have fun!

On 3/15/07, Ulf Norell [EMAIL PROTECTED] wrote:



On 3/15/07, Steve Downey [EMAIL PROTECTED] wrote:
 EOk, i'm trying to write down, not another monad tutorial, because I
 don't know that much yet, but an explication of my current
 understanding of monads.

 But before I write down something that is just flat worng, I thought
 I'd get a cross check. (and I can't get to #haskell)

 Monads are Functors. Functors are projections from one category to
 another such that structure is preserved. One example I have in mind
 is the embedding of the natural numbers into the real numbers. The
 mapping is so good, that we don't flinch at saying 1 == 1.0.

 Monads are endofunctors (functors from one category to itself). This is
easy to see from the type of join:

 join : m (m a) - m a

 For Haskell monads the category is the category of Haskell types and
Haskell functions. In this category N and R are objects, so you'll get the
wrong idea trying to see them as categories.

 / Ulf


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe



___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] N and R are categories, no?

2007-03-15 Thread Dominic Steinitz
 I haven't formally checked it, but I would bet that this endofunctor
 over N, called Sign, is a monad:

Just to be picky a functor isn't a monad. A monad is a triple consisting of a 
functor and 2 natural transformations which make certain diagrams commute.

If you are looking for examples, I always think that a partially ordered set 
is a good because the objects don't have any elements. A functor is then an 
order preserving map between 2 ordered sets and monad is then a closure 
(http://en.wikipedia.org/wiki/Closure_operator) - I didn't know this latter 
fact until I just looked it up.

Dominic.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] N and R are categories, no?

2007-03-15 Thread Nicolas Frisby

Thanks for keeping me honest ;)

On 3/15/07, Dominic Steinitz [EMAIL PROTECTED] wrote:

 I haven't formally checked it, but I would bet that this endofunctor
 over N, called Sign, is a monad:

Just to be picky a functor isn't a monad. A monad is a triple consisting of a
functor and 2 natural transformations which make certain diagrams commute.

If you are looking for examples, I always think that a partially ordered set
is a good because the objects don't have any elements. A functor is then an
order preserving map between 2 ordered sets and monad is then a closure
(http://en.wikipedia.org/wiki/Closure_operator) - I didn't know this latter
fact until I just looked it up.

Dominic.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] N and R are categories, no?

2007-03-14 Thread Steve Downey

EOk, i'm trying to write down, not another monad tutorial, because I
don't know that much yet, but an explication of my current
understanding of monads.

But before I write down something that is just flat worng, I thought
I'd get a cross check. (and I can't get to #haskell)

Monads are Functors. Functors are projections from one category to
another such that structure is preserved. One example I have in mind
is the embedding of the natural numbers into the real numbers. The
mapping is so good, that we don't flinch at saying 1 == 1.0.

The functor that takes us from N to R is probably a Monad, that is, if
N and R are categories.

The real hard part is tying together how unit, join and bind produce a
spacesuit that can protect apples from nuclear waste. I'm still
getting that clear in my head, although my recent blinding flash of
obviousness that M a is a type, and that of course types can do
interesting things, I think gets me further along.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe