algebraic-data-types

    16熱度

    2回答

    上Inductive Data Types and Pattern Matching狀態阿格達手冊: 爲了確保規範化,感性的發生必須出現在嚴格正位置。例如,下面的數據類型是不允許的: data Bad : Set where bad : (Bad → Bad) → Bad 因爲有壞的參數來構造一個負的發生。 爲什麼這個要求對於歸納數據類型是必需的?

    15熱度

    2回答

    我很難理解爲什麼這兩個片段在所謂的「窮人的嚴格分析」下產生不同的結果。 第一個例子使用data(假設正確的應用型實例): data Parser t a = Parser { getParser :: [t] -> Maybe ([t], a) } > getParser (pure (,) <*> literal ';' <*> undefined) "abc" **

    3熱度

    1回答

    根據數據類型的定義,我有一個問題: 可以在定義中使用符號或數字嗎? 舉例來說,如果我想創建一個數據類型爲低,等號當然 data Signs = Lo | Eq 的下面的代碼工作的構造羅代表「<」和構造函數公式爲「=」。 但我不能使用「真實」的跡象。例如,下面的代碼將無法正常工作 data Signs = Lo "<" | Eq "=" type Signs = "<" | "=" type

    0熱度

    2回答

    在我的考試中,我得到了這個表達式,並且未能構造出二叉樹。解決方案是什麼? (5a-3b)^2*(3a+5b)^3 我畫的樹從上述表達類似 * /\ / \ ^ \ /\ \ / \ \ - 2 ^ /\ /\ / \ + 3 * * /\ /\ /\ / \ 5 a 3 b * *

    3熱度

    7回答

    我的代碼片段看起來是這樣的: data SomeData = A | B | C | D | E deriving (Show, Enum) ,我希望能夠達到一定的數值​​容易映射到這些類型。說我想有映射到SomeData型char S,我可能會做它像這樣: mappings = zip "abcde" [A, B, C, D, E] 這將產生[('a',A),('b',B)...]等。我

    3熱度

    2回答

    我必須構建一個Snoc列表,反向的缺點。我已經做了添加一個元素,我不知道如何連接兩個列表。這就是現在的情況: module Tsil where data Tsil a = Lin | Snoc (Tsil a, a) deriving (Eq, Ord, Show, Read) empty :: Tsil a empty = Lin infixr 2

    14熱度

    1回答

    {-# UNPACK #-}編譯指示告訴編譯器消除多餘的構造函數。引述Haskell wiki: 例如,給定此: data T = T {-# UNPACK #-} !(Int,Float) GHC將代表類型T是這樣的: data T = T Int Float 消除元組。這通常用於直接把裝箱的INTS在構造函數中: data T = T {-# UNPACK #-} !Int 將被表

    16熱度

    1回答

    通常,我需要將字段添加到只記憶一些冗餘信息的ADT。但我還沒有完全弄清楚如何很好地和有效地做到這一點。 顯示問題的最好方法是舉個例子。假設我們正在與非類型化lambda項工作: type VSym = String data Lambda = Var VSym | App Lambda Lambda | Abs VSym Lambda 而且時不時地,我們需要計算

    17熱度

    1回答

    通過this question和this blog post的閱讀讓我思考更多關於類型代數,特別是如何濫用它。 基本上, 1),我們可以認爲Either A B類型添加量:A+B 2),我們可以認爲有序對(A,B)的乘法:A*B 3)我們可以認爲的函數A -> B指數:B^A 這裏有一個明顯的模式:Multiplicat離子是重複加法,並且指數是重複乘法。這導致Knuth to define th

    0熱度

    1回答

    找到最小的,我需要找到最便宜的本田思域在此表 Sell(DName, Make, ModelNum, Price) 還有其他的表出售,但我假設沒有其他製造商已經命名了他們做公民。 所以我期待找到Make Civic的最低價格。但我究竟能找到最低的價格?我會知道是否有一個設定價格(SELECT the make WHEN price < "x amount"),但我怎麼去找到表中最低的價格。