church-encoding

    16熱度

    3回答

    我正試圖在哈斯克爾實現教會數字,但我遇到了一個小問題。 Haskell的抱怨無限型與 的發生檢查:無法構造無限類型:T =(T - > T1) - 當我嘗試做減法> T2 - >(T1 - > T2)。我99%肯定我的lambda微積分是有效的(儘管如果不是,請告訴我)。我想知道的是,是否有任何事情可以讓haskell與我的功能一起工作。 module Church where type (C

    4熱度

    1回答

    我找不到一種方法來將增加定義爲重複增量,儘管這可能是一種無類型的語言。這裏是我的代碼: {-# LANGUAGE RankNTypes #-} type Church = forall a . (a -> a) -> (a -> a) zero :: Church zero = \f -> id inc :: Church -> Church inc n = \f -> f . n

    2熱度

    1回答

    Church數可以在C++ 0x中表示使用該語言的新拉姆達部分使用類似this(C++ 11): typedef function<int(int)> F; static const F id = [=](int x) { return x; }; function<F(F)> church(unsigned int i) { if(i == 0) { return [

    1熱度

    2回答

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

    14熱度

    2回答

    或者具體而言,爲什麼我們使用foldr來編碼列表和迭代來編碼數字? 對不起,我很想知道如何命名我想問的事情,所以我需要首先給出一些說明。這從this C.A.McCann post吸引很大,只是不完全滿足我的好奇心,我也會用rank-n類型和無限懶惰的東西handwaving問題。 一個編碼數據類型作爲功能的方法是創建接收用於每種情況下一個參數是「圖案匹配」功能,每個變元爲接收對應於該構造,並返回

    0熱度

    1回答

    我試圖通過計劃來了解教會編碼的整個原理。我認爲我理解如 教會標記的基本爲0 (定義的c-0 (拉姆達(F) (拉姆達(X) X))) 教堂標號1 (定義的c-1 (拉姆達(F) (拉姆達(x)的 (f x)))) ...並繼續將函數應用到x N次。 現在我的問題是這是什麼意思?如果我以教堂3爲例: (define c-3 (lambda (x) (lambda (f)

    2熱度

    1回答

    我想學習使用基於SICP的在線課程自己學習python和CS。我瞭解教會數字的基礎知識,但我在使用Python中的lambda函數添加教會數字時遇到了麻煩。 這是我下面的代碼方面: def zero(f): return lambda x: x def successor(n): return lambda f: lambda x: f(n(f)(x)) def o

    2熱度

    2回答

    我從書籍,爲Church數的繼任者是形式的閱讀: (\拉姆達NF X F(NFX)。) 昨晚我想出了這一點: ( \ abb。(ab)(bc)) 我相信它也執行後繼函數的功能。但是,我不是100%肯定的,我的減少是正確的。有人可以檢查它並告訴我嗎? (f(f(f))(f(f))的簡短版本,其中f(n) ))表示數字n,預期結果應爲n + 1,即(\ lambda f x。f^{n + 1} x)

    17熱度

    3回答

    我正在通過SICP工作,而problem 2.6讓我陷入了一種窘境。在處理教會數字時,將零和1編碼爲滿足某些公理的任意函數的概念似乎是合理的。另外,使用零的定義推導出單個數字的直接表達式,以及add-1函數是有道理的。我不明白如何形成一個加號運算符。 到目前爲止,我有這個。 (define zero (lambda (f) (lambda (x) x))) (define (add-1 n)

    -2熱度

    1回答

    我想在lambda微積分中定義二元指數運算符,例如運算符CARAT。例如,這個運算符可能帶有兩個參數,第2個lambda編碼和第4個lambda編碼,並計算第16個lambda編碼。我的答案並不對,但它花了我一天的時間這樣做。我使用教堂數字的定義。這是我的答案。如果我的回答錯誤,請諒解我。我不知道如何正確地做到這一點。如果有人知道,那麼請幫我找出簡短的答案。 繼任功能,接下來,它增加了一個,可以在