上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"),但我怎么去找到表中最低的价格。