Rendered at 19:16:00 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
tromp 11 hours ago [-]
The author presents most known numeral systems (ways of representing natural numbers) in lambda calculus, classified by whether the term use their bound variables exactly one time (linear), at most one time (affine), or multiple times (non-linear).
Mackie's paper [0] (one of the references) provides a good introduction to these. (although he strangely gets the definition of Church numerals wrong with "Church numerals encode numbers with repeated application: λx f. f^n x." in which he reversed the order of arguments f and x).
He illustrates some numerals in each system with a graphical notation that strongly reminds me of interaction nets [1], a computational model closely related to lambda calculus.
The notation they use for lambda terms is rather non-standard. Compare
> In β-reduction, k[(x⇒b)←a]⊳k[b{a/x}]k[(x⇒b)←a]⊳k[b{a/x}]
with Wikipedia's [2]
> The β-reduction rule states that a β-redex, an application of the form (λx. t) s, reduces to the term t[x:=s].
The k[...] part means that β-reduction steps can happen in arbitrary contexts.
I think I lack context to see what this is about. The line graphs are pretty though, and I'd like to understand more.
Sharlin 11 hours ago [-]
The author unfortunately only describes about half of the syntax they use, or rather, they describe the syntax of the language but assume the reader is familiar with the (rather obscure even in a PLT context) metalanguage.
p1esk 13 hours ago [-]
I didn’t understand that notation. Can someone please explain?
ngruhn 12 hours ago [-]
I think:
x => a
is:
λx. a
and
f <- a
is just application. I.e.
f a
lefra 12 hours ago [-]
What about big T, square/angle brackets, and braces?
jz391 47 minutes ago [-]
Braces are substitution, so
b{a/x}
means: expression b with variable x inside it replaced by expression a.
So their beta-reduction line just says that if
k = ... (λx.b) a ...
it can be reduced to
k = ... c ...
where c is the expression b, but with all occurrences of variable x replaced by expression a.
I think Tk(x) denotes "the definition of variable k is expression x" and the square brackets are "k[x]" something like "in the context of definition k, value of expression x". So I suspect that
a=Tk(x)
a[y]
would be effectively
(λk.y)x
But yes, not very clear on explaining the notation. Also seems to have some typos e.g. at the beginning have "x ∈ k, x, y" which looks to me should be "x ∋ k, x, y" (or of course "k, x, y ∈ x").
7 hours ago [-]
ngruhn 11 hours ago [-]
yeah no idea
jdw64 11 hours ago [-]
const f = (x) => x + 1;
throwaway81523 11 hours ago [-]
Hmm nice I guess, but I expected it was going to be about transfinite ordinals. I wonder if it can be extended to them.
0rbiter 4 hours ago [-]
Interesting. I wonder what the `s` functions in Scott & Church are.
He illustrates some numerals in each system with a graphical notation that strongly reminds me of interaction nets [1], a computational model closely related to lambda calculus. The notation they use for lambda terms is rather non-standard. Compare
> In β-reduction, k[(x⇒b)←a]⊳k[b{a/x}]k[(x⇒b)←a]⊳k[b{a/x}]
with Wikipedia's [2]
> The β-reduction rule states that a β-redex, an application of the form (λx. t) s, reduces to the term t[x:=s].
The k[...] part means that β-reduction steps can happen in arbitrary contexts.
[0] https://www.researchgate.net/publication/323000057_Linear_Nu...
[1] https://en.wikipedia.org/wiki/Interaction_nets
[2] https://en.wikipedia.org/wiki/Lambda_calculus
I think Tk(x) denotes "the definition of variable k is expression x" and the square brackets are "k[x]" something like "in the context of definition k, value of expression x". So I suspect that
would be effectively But yes, not very clear on explaining the notation. Also seems to have some typos e.g. at the beginning have "x ∈ k, x, y" which looks to me should be "x ∋ k, x, y" (or of course "k, x, y ∈ x").