我剛開始學習Haskell,我試圖在Haskell中使用lambda演算。我發現這個表達式將教堂的數字轉換成數字,但我似乎無法弄清楚這個表達式中的0是什麼意思。我找不到它: zero = (\f -> \x -> x)
one = (\f -> \x -> f x)
two = (\f -> \x -> f (f x))
getNum church = church (\x-> (x +
我試圖在Haskell中實現教會數字。這是我的代碼: -- Church numerals in Haskell.
type Numeral a = (a -> a) -> (a -> a)
churchSucc :: Numeral a -> Numeral a
churchSucc n f = \x -> f (n f x)
-- Operations with Church nu
我是哈斯克爾的新手。 我在尋找是否有任何方法來創建一個類的類型的實例。 有沒有什麼辦法讓這段代碼工作而不使用數據或newtype? type N = ∀n. (n -> n) -> n -> n
instance Printable N where
print :: N -> IO()
read :: String -> N
當我嘗試加載GHCI模塊它告訴我: Il
使用Church編碼,可以在不使用內置ADT系統的情況下表示任何任意代數數據類型。例如,Nat可以表示(在伊德里斯例如)爲: -- Original type
data Nat : Type where
natSucc : Nat -> Nat
natZero : Nat
-- Lambda encoded representation
Nat : Type
Na
好的,所以我試圖實現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[