我已經定義了以下函數用於beta測試,但我不確定如何考慮自由變量受限的情況。 data Term = Variable Char | Lambda Char Term | Pair Term Term deriving (Show,Eq)
--substition
s[M:x]= if (s=x) then M else s
AB[M:x]= (A[M:x] B [x:M])
Lambda
在OCaml中,它是合法的,在.mli: val f : 'a -> 'a
val g : 'a -> 'a
和.ml: let f x = x
let g = f
在F# 然而,這個被拒絕: eta_expand.ml(2,5): error FS0034: Module 'Eta_expand' contains
val g : ('a -> 'a)
but its
我想表達序列操作使用委託構建lambda表達式在C# public delegate Lambda Lambda(Lambda x);
問題 g*f = λz.(g z = error) -> error, (f o g)z
其中 f o g = λz.f(g z)
是我不不知道如何編碼錯誤術語。 是否有任何的方式來表達它像真假術語或教會的數字嗎?