lambda-calculus

    2熱度

    1回答

    我一直在閱讀一些關於算法的lambda演算(不解析,只是在解析之後進行評估),但到目前爲止,它們看起來都是你用筆和紙做的一種方法。我想從頭開始用C#編寫我自己的lambda微積分評估器,並想知道實際的程序如何做到這一點。 由於lambda表達式是lambda微積分的超集,我想知道lambda表達式的lambda微積分子集是如何評估的(不關心二進制操作或鑄造等)。 我已經有我的課,但我不知道應該怎麼

    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)

    13熱度

    1回答

    這裏就是我有一個問題的代碼:要在任意多的參數定義 {-# LANGUAGE GADTs, LANGUAGE DataKinds #-} -- * Universe of Terms * -- type Id = String data Term a where Var :: Id -> Term a Lam :: Id -> Type -> Term b -> Te

    -2熱度

    1回答

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

    3熱度

    2回答

    (圖1) 的簡單類型λ演算的一部分(圖1),它是在Haskell如下面給出的實施。 evaluate expression = do case expression of (Application (Lambda x ltype term) value) | isValue value = True -> substitute term x value (App

    6熱度

    3回答

    我需要驗證的lambda表達式類型類型: 我的方法給我: 我試着在Haskell來定義它(上擁抱),如這樣的: h= \f x -> f (f x) 當我致電:類型comamnd它給了我: (a -> a) -> a -> a 是否在Haskell中正確定義了mi函數?或者我的方法給了我一個錯誤的結果?

    1熱度

    1回答

    是否有人可以解釋找到沒有以下類型的自由變量的lambda-terme的過程?我對如何解決這個問題有一些想法,但我不確定這是否正確。 一個)p - >(Q-> Q) B)(對 - > Q) - >((Q-> R) - >(P-> R)) C)(對>(q - >(Q-> R))) - >(p - >(Q-> R))

    1熱度

    1回答

    我在寫一個簡單的lambda微積分語法(如下所示)。我遇到的問題是,函數應用程序似乎被視爲正確的聯想而不是左聯想,例如, (f(1 2))而不是(f 1)2,將「f 1 2」解析爲(f(1 2))。 ANTLR有一個關於令牌的assoc選項,但我不明白這有什麼用處,因爲沒有函數應用的操作符。有沒有人看到解決方案? LAMBDA : '\\'; DOT : '.'; OPEN_PAREN : '

    1熱度

    1回答

    在lambda微積分中,我將如何編寫一個函數,當它的輸入是標識函數時返回true? 假設真實是一些教會編碼的真值。 看來這應該是一個簡單的函數來編寫。但是對於我所想的每一個測試,一個棘手的輸入可能會超過它。這是不可能的嗎?

    0熱度

    1回答

    說我有\x lambda表達式的下面的例子旨在代表拉姆達X 什麼將下面的測試減少呢? (\x.\x.(x x)) \z.z 我的第一本能會一直爲這是 \x.(\z.z \z.z) 但有人與我交談的意見是,第二\ X也將與\z.z 更換這將這意味着它確實是 \(\z.z).(\z.z \z.z) 有人可以澄清w正確的做法是。我不能說我真的理解第二種方法。