上Inductive Data Types and Pattern Matching狀態阿格達手冊: 爲了確保規範化,感性的發生必須出現在嚴格正位置。例如,下面的數據類型是不允許的: data Bad : Set where
bad : (Bad → Bad) → Bad
因爲有壞的參數來構造一個負的發生。 爲什麼這個要求對於歸納數據類型是必需的?
根據數據類型的定義,我有一個問題: 可以在定義中使用符號或數字嗎? 舉例來說,如果我想創建一個數據類型爲低,等號當然 data Signs = Lo | Eq
的下面的代碼工作的構造羅代表「<」和構造函數公式爲「=」。 但我不能使用「真實」的跡象。例如,下面的代碼將無法正常工作 data Signs = Lo "<" | Eq "="
type Signs = "<" | "="
type
我的代碼片段看起來是這樣的: 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)...]等。我
我必須構建一個Snoc列表,反向的缺點。我已經做了添加一個元素,我不知道如何連接兩個列表。這就是現在的情況: module Tsil where
data Tsil a = Lin
| Snoc (Tsil a, a)
deriving (Eq, Ord, Show, Read)
empty :: Tsil a
empty = Lin
infixr 2
{-# UNPACK #-}編譯指示告訴編譯器消除多餘的構造函數。引述Haskell wiki: 例如,給定此: data T = T {-# UNPACK #-} !(Int,Float)
GHC將代表類型T是這樣的: data T = T Int Float
消除元組。這通常用於直接把裝箱的INTS在構造函數中: data T = T {-# UNPACK #-} !Int
將被表
找到最小的,我需要找到最便宜的本田思域在此表 Sell(DName, Make, ModelNum, Price)
還有其他的表出售,但我假設沒有其他製造商已經命名了他們做公民。 所以我期待找到Make Civic的最低價格。但我究竟能找到最低的價格?我會知道是否有一個設定價格(SELECT the make WHEN price < "x amount"),但我怎麼去找到表中最低的價格。