0
讓我們將[x |-> v] t
表示爲「用v替換x中的所有空閒事件」。Lambda表達式中替換的定義
我的教科書的替代規則是
[x |-> v] x=v
[x |-> v] y=y (where y is not x)
[x |-> v] (function x -> t) = (function x -> t)
[x |-> v] (function y -> t) (where y is not x) =
(function y -> [x |-> v]t)
[x |-> v] (t1 t2) -> ([x |-> v]t1 [x |-> v]t2)
我不太理解前兩個規則。 爲什麼y是x有區別?[x |-> v] x
中的第一個x和第二個x是否相同?第二條規則y可以像1+x
? 您可以在Lambda表達式或C/C++/C#/ Java中分別使用兩個規則給出兩個示例嗎?
非常感謝!
在你的例子中,x,y都是變量。 y可以是包含x的表達式嗎? – Gqqnbig
@LoveRight不,對於這個定義有意義'x'和'y'只能是變量。如果「y」可以代表任意詞,那麼定義將是錯誤的。希望你的書指出它會使用't1','t2'等來表示任意的術語,'x','y'等等來代表變量和'v'(並且可能是'v1','' v2'等等,如果需要多個)值(即不可約條件) - 也許有一個符號或約定部分寫這個。 – sepp2k