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.a...@ifi.lmu.de
http://www2.tcs.ifi.lmu.de/~abel/

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

Reply via email to