lambda-calculus

    4熱度

    1回答

    給定一個Haskell表達式,我想執行alpha轉換,即。重命名一些非自由變量。 我已經開始實現我自己的這個功能,它在haskell-src-exts Exp樹上工作,但事實證明這是令人驚訝的不平凡,所以我不禁想知道 - 是否有一個既定的easy-這種類型的源轉換可用的庫解決方案嗎?理想情況下,它應該與haskell-src-exts集成。

    6熱度

    1回答

    我已經定義了以下函數用於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

    0熱度

    4回答

    我正在寫一個Python腳本,應該採取函數列表,寫成lambda表達式,並返回所有函數的撰寫,但是,我在腳本中有一個箭頭,也許因爲我使用lambda表達式的方式。這似乎即使我給返回的函數一個數字值,我回來了一個函數,而不是一個數字。這是我寫的: def compose1(lst): if lst == []: return lambda x: x else:

    4熱度

    1回答

    我想測試一下Lambda微積分解釋器,我已經寫了一個相當大的Lambda微積分表達式測試集。有誰知道我可以使用的Lambda Calc表達式生成器(在Google上進行初始搜索時找不到任何內容)?這些表達式顯然必須適當形成。更好的是,儘管我自己創建了各種示例並制定瞭解決方案,以便檢查結果,但是有誰知道一個好的(和很大的)一套解決Lambda Calculus減少問題的方法嗎?我可以自己輸入表達式,

    3熱度

    1回答

    有人告訴我,術語 (z (λy.z x) (λy.y z)) 已經在它的正常形式 - 但我不明白爲什麼。無法一個再拍的β-減少在這種狀態下,並通過(λy.y z)取代y所有出現在長期(λy.z x),所以它會評估爲: (z (λy.z x) (λy.y z)) ==> (z z x)

    1熱度

    1回答

    您好我無法證明這些組合子S K'= K我 用括號[]中的步驟只是告訴你步驟我在做什麼。例如λyz.xz(yz)中的[λxy.x/ x]表示我將用表達式λyz.xz(yz)中的每個x代替(λxy.x) 我到目前爲止所嘗試的是減少SK和我得到這個: S K (λxyz.x z(y z)) (λxy.x) [λxy.x/x] in λyz.x z(y z) (λyz. (λxy.x) z(y z)

    1熱度

    2回答

    我知道這可能很簡單,但我在解決如何減少這個問題時遇到了問題。以下是我的等式。 (λx λy . y x) z 我只是需要一個想法,從這裏開始,因爲我完全失去了。

    12熱度

    2回答

    在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

    1熱度

    1回答

    我想表達序列操作使用委託構建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) 是我不不知道如何編碼錯誤術語。 是否有任何的方式來表達它像真假術語或教會的數字嗎?

    1熱度

    2回答

    有人可以用替代方法向我解釋我們如何得到一個數字「零」或其餘的自然數? 的值。例如: 「零」 λf.λx.x ,如果我申請上的這種表達的另一種表達: "(λf.(λx.x)) a" 然後使用替換: :=[a/f](λx.x) :=(λx.x) 我是什麼失蹤?我應該如何解釋這些數字表達式?