Hacker News new | past | comments | ask | show | jobs | submit login

A printing mistake was also responsible for the lambda in Lambda Calculus.



Another printing mistake gave English the word "dord"[0] (at least temporarily, and from a prescriptivist point of view). While this "word" didn't influence Unicode, it is somewhat analogous to the situation in Japan where there are symbols that are arguably in the language but which are never meaningfully used.

I assume that the situation is even stranger in Japanese because these mistakenly created symbols do not have either an associated definition (even a mistaken one) or a pronunciation.

[0] https://www.youtube.com/watch?v=nb0YoRMXIY0


Possibly not, according to [0], which links to [1], presented by a student of Church.

0: https://math.stackexchange.com/questions/64468/why-is-lambda...

1: https://www.youtube.com/watch?v=juXwu0Nqc3I


I thought it was more of an accident? The story I know goes that Church used hats over variables, and then he switched over to lambda prefixes for ease of printing.


I have often thought that if I were to teach a class on functional programming, I would use JavaScript’s fat arrow notation to introduce lambda calculus. Less succinct with all the extra parentheses that occur in function calls but I think it’s easy enough to explain.


Pretty much the same idea, but in math contexts I tend to use the \mapsto arrow (↦), since mathematicians are more familiar with this than lambda calculus. (The fat arrow seems like an interesting alternative in programming contexts, but I worry that it might be confused with implication.)

The function that swaps the arguments to a two-argument function: f ↦ ((x, y) ↦ f(y, x))


Interesting. The mathematical notation I learned in school was: f:x↦2x+3, So I guess this would translate to f:(x,y)↦(y,x).

Alternatively, the f(x,y) = (y,x) notation would work (sort of, you tend to explicitly write out the base vector 𝑒ₖ for both notations: f(x,y) = f(x𝑒₁+y𝑒₂) = y𝑒₁+x𝑒₂ )

https://en.wikipedia.org/wiki/Function_(mathematics)#Arrow_n...


That's close but not quite how I meant for the notation to be interpreted: f is an argument to an anonymous function. Maybe clearer is

swap = f ↦ ((x, y) ↦ f(y, x))

The rule this satisfies is

swap(f)(x, y) = f(y, x)

and the type for swap is

swap : (X × Y → Z) → (Y × X → Z)

for some types/sets X, Y, and Z.

(Also, note that tuples might not be anything like a vector space. For example, for String × [Int], you wouldn't usually write ("hi", [2,3]) as "hi"𝑒₁ + [2,3]𝑒₂ since there's not really a good commutative addition operation for strings or lists.)




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: