[Haskell-beginners] Re: map question

Will Ness will_n48 at yahoo.com
Sun Oct 18 18:32:31 EDT 2009

Deniz Dogan <deniz.a.m.dogan <at> gmail.com> writes:

> 2009/10/18 Will Ness <will_n48 <at> yahoo.com>:
> > 
> > exactly, just that it would be a _binary_ (-) .
> So the only case where `(this)` syntax would be useful is where you
> want to make GHC understand you mean the binary (-) operator and you
> want to use point-free code. Now you have the choice between `(-)` and
> subtract, which one will it be? :)

  subtract = flip (-)  -- binary
  (`-`)    = (-)       -- binary

The only one place where I'd like to use it, is in (`-`2), instead of (flip (-) 
2) or (subtract 2) or (\a->a-2) or anything else.

Also, it is not `(-)` syntax that I'm advocating for, but `-` syntax, in 
sections, to guide the selection of the operator's _binary_ version over its 
_unary_ version. 

Actually, I suspect there is no unary (-), but rather in (-2) the "-" is a part 
of number read syntax. Having it enclosed in backticks would stop it being read 
as a part of a number, and thus ensure it being correctly interpreted as an 
operator, binary as any other Haskell operator:

  Prelude> :t (-)
  (-) :: (Num a) => a -> a -> a

  Prelude> :t (`-`2)
  <interactive>:1:2: parse error on input `-'

Even (`-`) may be left as invalid syntax, as it is today:

  Prelude> :t (`foldl`)
  <interactive>:1:8: parse error on input `)'

  Prelude> :t (`foldl`0)
  (`foldl`0) :: (Num a) => (a -> b -> a) -> [b] -> a

More information about the Beginners mailing list