[Haskell] Do the libraries define S' ?

Ross Paterson ross at soi.city.ac.uk
Fri Jul 9 06:03:58 EDT 2004


On Thu, Jul 08, 2004 at 08:36:57PM -0400, David Menendez wrote:
> Conor T McBride writes:
> > 
> >    infixl 9 <%>  -- my name for <# -- others have other names
> >    class Idiom i where
> >      idi :: x -> i x
> >      (<%>) :: i (s -> t) -> i s -> i t
> > 
> > I call them idioms because it's like having the apparatus
> > of applicative programming, just in a different (perhaps impure)
> > idiom.
> > 
> > [I only just found out that they show up under the name Sequence
> >   in the experimental Control.Sequence module. I should have known.
> >   It's part of the Arrow stuff, and these things are an interesting
> >   species of Arrow. As far as I know, it was Ross Paterson who
> >   identified them in the categorical jungle as weakly symmetric lax
> >   monoidal functors.]
> 
> I've also seen this referred to as a pointed functor[1] and a premonad[2].
> [...]
>     class Functor f where
>       fmap :: (a -> b) -> f a -> f b
>     
>     class Functor p => Premonad p where
>       return :: a -> p a

Not quite: premonads let you lift values (using return) and unary
functions (using fmap), but the things Conor is talking about let
you lift functions of any arity.  A premonad doesn't give you

	lift2 :: (a -> b -> b) -> f a -> f b -> f c


More information about the Haskell mailing list