lambda-calculus

    1熱度

    1回答

    以下代碼是lambda演算解釋器。 我無法讓程序將代碼的結果打印到console.log。 class Token { // type should be one of the valid token types listed // below, and value is an optional value that can carry // any extra in

    0熱度

    1回答

    我有以下lambda表達式免費的拉姆達的X: x λ x. x 這是一個功能的應用程序,但爲什麼x是自由變量?

    1熱度

    1回答

    我有一個可以重寫lambda術語的小系統。它具有通常的(三個)確定性按值重寫規則。我沒有在這裏列出。 重寫模擬爲Step從一個Term到另一個。我也有可達項之間的關係,其中後者可以由第一個零或更多重寫步驟產生。 我現在想表明重寫終止(帶有值或卡住)。我已經刪除了細節,因爲我不認爲他們在這裏重要,但如果需要,我可以添加更多細節。 這裏是(在瀏覽器中或here CollaCoq)代碼: Variabl

    4熱度

    1回答

    想象一下,使用標準化(包括lambda下的替換)作爲「優化」的類型化lambda演算(排除一個非常痛苦的非終止和隱式遞歸問題)的樸素編譯器。 對於大多數或全部變量僅使用一次的簡單程序,規範化導致程序既短又快。 對我來說這是「明顯的」,總的來說這不是一個好主意。也就是說,由於規範化會減少共享,因此優化會導致條款惡化。 2個乘法 \x -> let a = x * x in a * a 術語被 「

    1熱度

    1回答

    所有: 我怎麼能寫在 「咖喱」 語法如下: let y = 2 in let f x = x + y in let f x = let y = 3 in f y in f 5 我在第一次嘗試這樣的事情: (y -> (f -> ((f x -> f 5) (y -> f y) 3)) x + y) 2 但是,這似乎並沒有正確評估。 更好的是,Lambda表達式可以看到綁定。 謝謝!

    2熱度

    2回答

    我仍在嘗試瞭解OCaml中的值限制,並通過Wright's paper進行了解讀。並且在其中,(fun x -> x) (fun y -> y)不是一個語法值,它也表示lambda表達式應該是一個值。我在這裏有點困惑,是不是id id其本質上也是lambda表達式?在OCaml中真正算作語法值的是什麼? 我也試圖在utop,發現這些: utop # let x = let x = (fun y -

    0熱度

    1回答

    一些LISP表達式求自己(的例子是MIT的方案REPL,雖然GNU Common Lisp的同意): 1 ]=> 3 ;Value: 3 而且是在正常的形式。對錶達式(例如(+ 2 1))的評估因此可以適當地被認爲是轉換爲正常形式。這很好,因爲這正是我一直正式理解評估的方式。 但隨着列表,我們就有麻煩了: 1 ]=> (list 3 2) ; Value 16: (3 2) 1 ]=>

    2熱度

    2回答

    我是Lambda Calculus的新用戶。 我已閱讀約definition of lambda expression on Wikipedia。 該組lambda表達式,Λ,可以感應地定義: 如果x是一個變數,則x∈Λ 如果x是一個變量和M∈Λ,則( λx.M)∈Λ 如果M,N∈Λ,則(MN)∈Λ規則2的 實例被稱爲抽象和規則3的情況下,被稱爲應用程序。 我知道規則2的含義時中號是一個函數的抽象

    0熱度

    2回答

    我試圖減少以下使用測試版還原: (λx.x x) (λx. λy.x x) 我陷入第一次換人後,因爲它似乎是給(λx. λy.x x)(λx. λy.x x)這將在怎樣的一個循環的結束。我究竟做錯了什麼?

    5熱度

    1回答

    在維基百科中,bottom type被簡單地定義爲「沒有值的類型」。但是,如果b是這種空白類型,那麼產品類型(b,b)也沒有值,但似乎與b不同。我同意底部是無人居住的,但我不認爲這個屬性足以定義它。 通過Curry-Howard correspondence,底部與數學錯誤相關聯。現在有一個邏輯原則,說明False遵循任何命題。通過庫裏霍華德,這意味着類型forall a. bottom -> a