[Haskell-cafe] Origins of '$'
Luke Palmer
lrpalmer at gmail.com
Sun Dec 7 05:34:54 EST 2008
On Sun, Dec 7, 2008 at 3:05 AM, Hans Aberg <haberg at math.su.se> wrote:
> One can define operators
> a ^ b := b(a) -- Application in inverse.
> (a * b)(x) := b(a(x)) -- Function composition in inverse.
> (a + b)(x) := a(x) * b(x)
> O(x) := I -- Constant function returning identity.
> I(x) := x -- Identity.
> and use them to define lambda calculus (suffices with the first four;
> Church reverses the order of "*").
The simple elegance of writing this encoding just increased my already
infinite love of Haskell by another cardinality.
a .^ b = b a
(a .* b) x = b (a x)
(a .+ b) x = a x .* b x
o x = i
i x = x
toNat x = x (+1) 0
fromNat n = foldr (.) id . replicate n
Luke
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20081207/d9a85b23/attachment.htm
More information about the Haskell-Cafe
mailing list