lambda-calculus

    15熱度

    7回答

    給出一個函數至少n爭論,我想使之成爲n個參數來旋轉第一個參數。例如(在無類型的lambda微積分中): r(λa. a) = λa. a r(λa. λb. a b) = λb. λa. a b r(λa. λb. λc. a b c) = λb. λc. λa. a b c r(λa. λb. λc. λd. a b c d) = λb. λc. λd. λa. a b c

    5熱度

    2回答

    爲了瞭解定點組合器的用途,我寫了自己的。但是,而不是用嚴格的匿名函數寫它,就像Wikipedia's example,我只是用定義: (define combine (lambda (functional) (functional (lambda args (apply (combine functional) args)))) 我和函的階乘和斐波那契數進行了測試,它似乎工作

    26熱度

    3回答

    我對Ruby有點新鮮,仍然試圖理解一些語言設計原則。如果我已經明白了,Ruby中的lambda表達式調用必須使用方括號,而「常規」函數調用使用「常規」/圓括號。 是否有一個特殊的原因,語法不同?換句話說,(爲什麼)調用者應該知道他們是否調用函數或應用lambda表達式?

    3熱度

    2回答

    我是lambda微積分新手,正努力證明以下幾點。 SKK和II是beta等價物。 其中 S =拉姆達xyz.xz(YZ) K =拉姆達xy.x I =拉姆達XX 我試圖測試通過打開它減少SKK,卻得到了不通,它變得混亂。不認爲SKK還可以不擴大S爲減少,K

    2熱度

    1回答

    我有以下 (f.x.f(f x))(y.y+1) = x.(y.y+1)((y.y+1) x) = x.(y.y+1)(x+1) = x.x+1+1 我不明白爲什麼它是確定最後的轉型? 是不是應該是x.(y.y+1)(x+1)= y+1?爲什麼他擺脫y

    1熱度

    1回答

    ... partial application(或部分功能應用程序)是指將一定數量的參數固定到一個函數,產生另一個較小元數的函數的過程。 我想找出是否有以下特定的名稱:(僞代碼!) // Given functions: def f(a, b) := ... def g(a, b) := ... def h(a, b) := ... // And a construct of the f

    5熱度

    1回答

    我在理解lambda微積分運算符優先級時遇到問題。 例如以下代碼: lambda x.x z lambda y.x y 將是: lambda x. (x (z lambda y. x y)) 或 lambda x. ((x z) (lambda y. x y)) ? 更爲複雜的例子: (lambda x.x z) lambda y.w lambda w.w x y z 凡在上述例子

    2熱度

    1回答

    我讀報紙Generics of a Higher Kind,第一句話就是 與Java 5和C#2.0,一階 參數多態性引入主流 對象 - 面向名稱仿製藥的 下 編程語言。 我不知道什麼是一階參數多態呢,我也不太明白什麼是一次函數,我知道高階函數是函數,它接受一個函數,返回一個函數,但我不不知道什麼是零階函數,一階函數。 只見解釋從here,像這樣: 的F - > G是零階 的F - >克 - >

    16熱度

    3回答

    我正試圖在哈斯克爾實現教會數字,但我遇到了一個小問題。 Haskell的抱怨無限型與 的發生檢查:無法構造無限類型:T =(T - > T1) - 當我嘗試做減法> T2 - >(T1 - > T2)。我99%肯定我的lambda微積分是有效的(儘管如果不是,請告訴我)。我想知道的是,是否有任何事情可以讓haskell與我的功能一起工作。 module Church where type (C

    11熱度

    2回答

    我正在通過Types and Programming Languages進行工作,而針對按價值降低策略調用的皮爾斯給出了術語id (id (λz. id z))的示例。內部redex id (λz. id z)首先減少爲λz. id z,在外部redex減少爲正常形式λz. id z之前,由於第一次減少而給出id (λz. id z)。 但是,按價值順序調用的定義是'只有最外面的索引被減少','只