[Haskell-cafe] Origins of '$'

Mark P. Jones mpj at cs.pdx.edu
Mon Dec 8 12:58:53 EST 2008

Don Stewart wrote:
> Which suggests that $ was already in the 1.0 report going to SIGPLAN.
> Perhaps Paul or Simon could shed light on it? Anyone have the 1.0 report
> lying around to check if it was in earlier?

As far as Haskell is concerned, the first "report"-ed occurrence
of the $ operator was in the Haskell 1.2 report dated March 1992.
I don't see any mention of the $ operator in either the 1.0 or
the 1.1 reports (April 1990 and August 1991, respectively).

The 1.0 report did define the following operator, which is a
variant of $:

   let     ::  a -> (a -> b) -> b
   let x k  =  k x

This was exported from the prelude, but its definition actually
appeared in the PreludeIO section of the report, hinting at the
main motivation for its introduction in support of continuation
based I/O.  (Monadic I/O didn't officially arrive until the 1.3
report in May 1996.)

But the "let" operator was quickly promoted to a keyword in
Haskell 1.1 with the introduction of let expressions, replacing
the "where expressions" that Haskell 1.0 had provided for local
definitions.  With the move to 1.1, "where" became part of the
syntax for definition right hand sides, able to scope across
multiple guards and no longer part of the expression syntax.

A little history can sometimes be fun.

All the best,

More information about the Haskell-Cafe mailing list