lambda-calculus

    3熱度

    1回答

    K組合子是K := (λxy.x)並且固定點組合子是Y := λf.(λx.f x x) (λx.f x x)。我試圖計算YK: YK = (λx.Kxx)(λx.Kxx) = (λx.x)(λx.x) = (λx.x) = I 如此,因爲YK是K固定點:對於任何電子郵件 K(YK) = YK KI = I KIe = Ie = e 。但KIe應該等於I!

    13熱度

    1回答

    class Monad m where return :: a -> m a (>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b m >> n = m >>= \_ -> n fail :: String -> m a 我從來沒有在類型類中看過方程(或函數聲明?)。爲什麼類型

    9熱度

    1回答

    在「類型和編程語言」中,第6.1.2節中他們討論了用於爲lambda表達式中的自由變量編號的命名上下文。使用他們提供的示例方案,λx.xb和λx.xx的de Bruijn表示形式爲λ.00,如果它們有明顯不同的術語。這個怎麼用?

    7熱度

    6回答

    重用lambda函數,我應該把這個代碼: f x y z = x^3 - g (x + g (y - g z) + g (z^2)) where g x = 2*x^2 + 10*x + 1 並重寫它沒有在那裏(或讓)。 他們的意思是把它與lambda函數寫(\ X - > ...) 我想重用的哈斯克爾lambda函數。有任何想法嗎?

    4熱度

    2回答

    我工作的編譯器/防爆檢查,我想知道,如果我有一個語法樹像這樣的,例如: ​​ 如果有辦法檢查Expr的alpha等價(等價模更名)。然而,這個Expr與lambda演算的不同之處在於,λ中的變量集是可交換的 - 即參數的順序不涉及檢查。 (爲簡單起見,Lambda ["x","y"] ...不同於Lambda ["x"] (Lambda ["y"] ...),在這種情況下,順序很重要)。 換句話說

    15熱度

    4回答

    我在lambda微積分中遇到了前驅函數的Wikipedia描述。 維基說什麼是以下幾點: PRED:=λnfx.n(λgh.h(GF))(λu.x)(λu.u) 有人能解釋還原工藝步驟 - 一步? 謝謝。

    20熱度

    2回答

    (我確定這個網站上已經有這個答案了,但是搜索被C中的一個變量調用free()的概念所淹沒。)我遇到了「eta還原」這個術語,如果x是「M中不空閒」,則定義爲f x = M x ==> M。我的意思是,我認爲我理解它要說的內容的要點,看起來就像你將一個函數轉換爲無點風格時所做的一樣,但我不知道x是不是免費的限定詞意味着什麼。

    29熱度

    1回答

    我無法解釋術語lambda cube遠好於維基百科的作用: [...]的λ-立方體探索的框架精化的軸在 Coquand的微積分結構,從簡單類型的 lambda微積分作爲放置在原點的立方體的頂點,以及構造的微積分(更高階依賴型多態 lambda微積分),因爲它在直徑上相反頂點。立方體的每個軸代表一種新的抽象形式: 術語取決於類型或多態性。系統F,又名二階拉姆達演算,是通過只強加這個屬性而獲得的。 類

    7熱度

    3回答

    可以通過高階函數在無類型lambda微積分中編碼各種類型。 Examples: zero = λfx. x one = λfx. fx two = λfx. f(fx) three = λfx. f(f(fx)) etc true = λtf. t false = λtf. f tuple = λxyb. b x y null = λp. p (λxy. false)

    7熱度

    1回答

    我不理解爲什麼以下的β還原是在無類型演算允許: (λx.x y) (u v) -> ((u v) y) 具體來說,我無法理解如何可以傳遞兩個參數u和v到λx.x部件中的單個參數x。 要允許上述不應該使用柯里裏並有兩個參數?像這樣— (λx.(λy.(x y))) (u v)