[Haskell-cafe] Alternative name for return

Andreas Abel andreas.abel at ifi.lmu.de
Tue Aug 13 17:38:45 CEST 2013

On 06.08.2013 10:46, Adam Gundry wrote:
> On 06/08/13 06:14, J. Stutterheim wrote:
>> Suppose we now have the opportunity to change the name of the
>> `return` function in Monad, what would be a "better"  name for it?
>> (for some definition of better)
> Rather than proposing a different name, I'm going to challenge the
> premise of your question. Perhaps it would be better if `return` had no
> name at all. Consider the following:
>      return f `ap` s `ap` t
>      f <$> s <*> t
>      do { sv <- s
>         ; tv <- t
>         ; return (f sv tv) }

Indeed, I wished the 0-ary case would be more alike to the unary and 
binary case, cf.

   return f0
   f1 <$> a1
   f2 <$> a1 <*> a2

What is needed is a nice syntax for "idiom brackets".

> These are all different ways of spelling
>      f s t
> plus the necessary applicative or monadic bureaucracy. But why couldn't
> we write just the plain application, and let the type system deal with
> the plumbing of effects?

I would not think this is practically possible.  For instance, if

   f :: a -> b -> c

then it could be a binary function or a unary function in the context 
monad reading from a, thus, application

   f x

is ambiguous or too sensitive, especially with type inference.

> I realise that this may be too open a research area for your project...

Andreas Abel  <><      Du bist der geliebte Mensch.

Theoretical Computer Science, University of Munich
Oettingenstr. 67, D-80538 Munich, GERMANY

andreas.abel at ifi.lmu.de

More information about the Haskell-Cafe mailing list