扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
lambda x .
x的东西,并不等于我们可以把S K K归约到lambda x. x。在我们讨论的lambda算子里,我们说”x = y”当且仅当x和y要么完全一样,要么可以通过alpha变换变得一样(所以lambda x y . x + y
等于 lambda a b . a + b,
但却不等于lambda x y . y + x
)。这叫做intentional equivalence(内涵等价?)。不过另外一种等价关系极其有用。我们称之为extensional equivalence(外延等价?)或extentional equality。在extensional equality里,表达式X和表达式Y相等当且仅当X和Y如前所述等价,或者对任意值a, X a = Y a。从现在开始,我们用“=”或等价指代extensional equality。呵呵,其实编程的时候,equals()也是一个很难实现正确的函数。不然C++不会在STL里加入等价的概念;Java里 ((Long)0L).equals(0) 居然返回false;Ruby里有equal?, eql?,和==;Common Lisp里有eq, eql, equal, 和equalp;而Joshua Bloch在Effective Java里用了整整一节讨论equal。更不用说我们学习逻辑的时候,要仔细定义什么叫做等价。C{x} = x
C{E1 E2} = C{E1} C{E2}
C{lambda x . E} = K C{E}
如果x不是E的自由变量C{lambda x . x} = I
C{lambda x. E1 E2} = (S C{lambda x.E1} C{lambda x.E2})
C{lambda x.(lambda y. E)} = C{lambda x. C{lambda y .
E}}
, 如果x是E的自由变量C{lambda x y . y x}
=> Curry
一把
: C{lambda x . (lambda y . y x)}
=> By rule 6: C{lambda x .
C{lambda y . y x}}
=> By rule 5: C{lambda x . S C{lambda y. y} C{lambda y . x}}
=> By rule 4: C{lambda x . S I C{lambda y . x}}
=> By rule 3: C{lambda x . S I (K C{x})}
=> By rule 1: C{lambda x . S I (K x)}
=>
By rule 5: S C{lambda x . S I} C{lambda x .
(K x)}
=> By rule 3: S (K (S I)) C{lambda x . K x}
=> By rule 5: S (K (S I)) (S C{lambda x . K} C{lambda x . x})
=> By rule 1: S (K (S I)) (S C{lambda x . K} I)
=> By rule 3: S (K (S I)) (S (K K) I)
S (K (S I)) (S (K K) I)
和给出的公式lambda x y . y x
等价?简单,我们传给这个SKI表达式两个参数,x和y, 然后规约,看看结果是不是等于y x:S (K (S I)) (S (K K) I) x y
A=(K (S I)), B = (S (K K) I)
, 于是原公式变为 S A B x y
(A x (B x)) y
(A x ((S (K K) I) x)) y
(A x ((K K) x (I x))) y
(A x ((K K) x x)) y
(K K) x
: (A x (K x)) y
((K (S I)) x (K x)) y
(K (S I)) x
, giving: ((S I) (K x)) y
I y (K x) y
y (K x) y
(K x) y
得到: y x
`r```````````.H.e.l.l.o. .w.o.r.l.di
.
”是一个元操作符号。.X
返回X并打印出X。
“r”表示回车。最后的”i”是I组合子。而下面的程序打印出非波拉契数列,并在数列的每一项,F(n),旁边打印出n个星号,”*”:```s``s``sii`ki
`k.*``s``s`ks
``s`k`s`ks``s``s`ks``s`k`s`kr``s`k`sikk
`k``s`ksk
K
(SII(S(K(S(S(K(SII(S(S(KS)(S(K(S(KS)))(S(K(S(S(KS)(SS(S(S(KS)K))(KK)))))
(S(S(KS)(S(KK)(S(KS)(S(S(KS)(S(KK)(S(KS)(S(S(KS)(S(KK)(SII)))
(K(SI(KK)))))))(K(S(K(S(S(KS)(S(K(SI))(S(KK)(S(K(S(S(KS)K)(S(S(KS)K)I)
(S(SII)I(S(S(KS)K)I)(S(S(KS)K)))))(SI(K(KI)))))))))(S(KK)K)))))))(K(S(KK)
(S(SI(K(S(S(S(S(SSK(SI(K(KI))))(K(S(S(KS)K)I(S(S(KS)K)(S(S(KS)K)I))
(S(K(S(SI(K(KI)))))K)(KK))))(KK))(S(S(KS)(S(K(SI))(S(KK)(S(K(S(S(KS)K)))
(SI(KK))))))(K(K(KI)))))(S(S(KS)(S(K(SI))(SS(SI)(KK))))(S(KK)
(S(K(S(S(KS)K)))(SI(K(KI)))))))))(K(K(KI))))))))))(K(KI)))))(SI(KK)))))
(S(K(S(K(S(K(S(SI(K(S(K(S(S(KS)K)I))(S(SII)I(S(S(KS)K)I)))))))K))))
(S(S(KS)(S(KK)(SII)))(K(SI(K(KI)))))))(SII(S(K(S(S(KS)(S(K(S(S(SI(KK))
(KI))))(SS(S(S(KS)(S(KK)(S(KS)(S(K(SI))K)))))(KK))))))(S(S(KS)
(S(K(S(KS)))(S(K(S(KK)))(S(S(KS)(S(KK)(SII)))(K(S(S(KS)K)))))))(K(S(S(KS)
(S(K(S(S(SI(KK))(KI))))(S(KK)(S(K(SII(S(K(S(S(KS)(S(K(S(K(S(S(KS)(S(KK)
(S(KS)(S(K(SI))K))))(KK)))))(S(S(KS)(S(KK)(S(K(SI(KK)))(SI(KK)))))
(K(SI(KK))))))))(S(S(KS)(S(K(S(KS)))(S(K(S(KK)))(S(S(KS)(S(KK)(SII)))
(K(SI(K(KI))))))))(K(K(SI(K(KI)))))))))(S(K(SII))(S(K(S(K(SI(K(KI))))))
(S(S(KS)(S(KK)(SI(K(S(K(S(SI(K(KI)))))K)))))(K(S(K(S(SI(KK))))
(S(KK)(SII)))))))))))(K(SI(K(KI))))))))(S(S(KS)K)I)
(SII(S(K(S(K(S(SI(K(KI)))))K))(SII)))))
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者