https://www.ics.uci.edu/~lopes/teaching/inf212W12/readings/church.pdf
https://gitlab.com/cccnqu111/alg/-/tree/master/09c-lambdaCalculus
f = lambda x: x+1
f(10)
和下面的寫法等價
def f(x):
return x+1
f(10)
def f(a, b):
return a + b
f(2, 3)
def f(a):
def g(b):
return a + b
return g
f(2)(3)
def true_(x, y):
return x
def false_(x, y):
return y
def if_(c, x, y):
return c(x, y)
def and_(p, q):
return p(q, false_)
def or_(p, q):
return p(true_, q)
def not_(p):
return p(false_, true_)
def _0(f, x):
return x
def _1(f, x):
return f(x)
def _2(f, x):
return f(f(x))
def _3(f, x):
return f(f(f(x)))
def succ(n):
def g(f, x):
return f(n(f, x))
return g
def plus(m):
def _plus(n):
return m(succ, n)
return _plus
def mult(m, n):
return m(plus, n) _0
\[PRED=\lambda n.\lambda f.\lambda x.n\\ (\lambda g.\lambda h.h\ (g\ f))\\ (\lambda u.x)\ (\lambda u.u)\]
- $\lambda u.x$
- $\lambda u.u\ x$
- $\lambda u.u\ (f\ x)$
- $\lambda u.u\ (f\ (f\ x))$
- $\lambda u.u\ (f\ (f\ (f\ x)))$
- $...$
def sub(m, n):
return n(pred, m)
ISZERO = lambda n: n(lambda u: FALSE)(TRUE)
LESS_THAN_EQUAL = lambda m: lambda n: ISZERO(SUB(m)(n))
LESS_THAN = lambda m: lambda n: NOT(LESS_THAN_EQUAL(n)(m))
EQUAL = lambda m: lambda n: AND(LESS_THAN_EQUAL(m)(n))\
(LESS_THAN_EQUAL(n)(m))
GREATER_THAN_EQUAL = lambda m: lambda n:\
LESS_THAN_EQUAL(n)(m)
GREATER_THAN = lambda m: lambda n:\
NOT(GREATER_THAN_EQUAL(n)(m))
def pair(x, y):
def g(f):
return f(x, y)
return g
def g(a, b):
return a(a, b)
g(g, x)
一開始的想法…
def fib(n):
def f(a, b):
if_(
b <= 2,
1,
a(a, b-1) + a(a, b-2))
return f(f, n)
def fib(n):
def f(a, b):
if_(b <= 2,
lambda g: 1,
lambda g: g(g, b-1) + g(g, b-2)) (a)
return f(f, n)
U = lambda g: g(g)
FIBONACCI = U(lambda f: lambda x:\
IF(LESS_THAN_EQUAL(x)(_2))\
(lambda g: _1)\
(lambda g: PLUS (U(g)(PRED(x)))
(U(g)(PRED(PRED(x))) )) (f))
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing