lambda-calculus

    1熱度

    2回答

    我一直在尋找哈斯克爾的核心語言來了解它是如何工作的。我在互聯網搜索中發現的一個功能是類型強制。我知道他們習慣實施GADT,但我不明白其他許多。儘管我對系統F有很好的理解,但我在網上找到的所有描述對我來說都是相當高的水平。任何人都可以向我以可理解的方式解釋類型強制嗎?

    1熱度

    1回答

    我知道這個話題已經討論過好幾次了,但還是有些東西還不清楚。 我讀過這個問題applicative-order/call-by-value and normal-order/call-by-name differences和有件事我會澄清一勞永逸: 呼叫按姓名 由於正常秩序,但沒有減少在裏面抽象執行。例如λx。(λx.x)x根據此策略處於正常形式,儘管它包含redex(λx.x)x。 在名稱調用中,

    3熱度

    2回答

    我爲Core Haskell編寫了一個自定義的漂亮打印機,以便更好地研究Core的結構。這臺漂亮的打印機的要點是它需要一個CoreModule,並在輸出中包含數據構造函數,默認情況下Outputable實現看起來沒有。 這裏是我上運行的漂亮打印機模塊的代碼: module Bar2 where add :: Int -> Int -> Int add a b = a + b add2 a

    1熱度

    2回答

    我正在朗讀演算中閱讀這些notes,並且我在開始時減少/評估其中一個表達式時遇到了一些問題。 特別是函數 (λf.λx.f(f(x)))(λy.y^ 2)(5)。 我該如何開始呢?他說答案是625.我的數學直覺說我們繼續這樣做: (λf.λx.f(f(x)))(5^2),他之前說過f(x)是地圖 X | - >的x^2 ,使f(F(X))是將FOF =(F)^ 2 = X^4 所以進一步降低了我們

    0熱度

    1回答

    我正在嘗試討論ANF(管理範式),但我無法理解lambda術語的翻譯。考慮這個lambda項:λx.x。你如何在ANF中編碼? x是一個變量,而是一個lambda體必須是一個讓約束力或ANF的功能應用,根據ANF語法: EXP ::= VAL VAL | let VAR = EXP in EXP VAL ::= λ VAR . EXP | VAR

    1熱度

    2回答

    我想創建一個lambda微積分函數P,使得給出((x y)(x P)(P z))。我嘗試過使用Y-combinator/Turing組合器的變種,即λg.(g g)形式的函數,因爲我需要重現函數本身,但是我看不到任何前進的方向。任何幫助將不勝感激。

    2熱度

    1回答

    在LYAHFGG we read: 在Haskell每個函數正式只需要一個參數。 在Lambda Calculus we read這樣的描述: 第二簡化的是,λ演算僅使用一個單一的輸入的功能。 我的問題是:Haskell的原因是單參數函數是lambda演算? (或者是它只是一個聯合注重簡約與鑽營?)

    3熱度

    2回答

    好的,所以我試圖實現basics of lambda calculus。在這裏。 我的號碼: def zero[Z](s: Z => Z)(z: Z): Z = z def one[Z](s: Z => Z)(z: Z): Z = s(z) def two[Z](s: Z => Z)(z: Z): Z = s(s(z)) 部分(實際上就是非)應用於它們的版本是水木清華這樣的: def z[

    6熱度

    2回答

    據我所知,在語言如Haskell中,並且也可作爲演算的一部分,每個拉姆達表達式都有自己的範圍,因此,如果我有嵌套lambda表達式如:\x -> (\x -> x)則第一\x參數是到所述第二不同\x。 在Java中,如果你這樣做,你會得到一個編譯錯誤,就像你再次使用x作爲參數名稱或者lambda中的一個局部變量名,如果它已經在封閉範圍內使用的話。作爲方法參數。 有誰知道爲什麼Java實現的lamb

    1熱度

    1回答

    我對SKI-Combinators有疑問。 僅可使用S和K組合子表達異或(不包括)還是僅使用S和K? 我 True = Cancel False = (Swap Cancel) 其中 Cancel x y = K x y = x Swap: ff x y = S ff x y = ff y x