Owe*_*wen 4 haskell types data-structures
我一直试图写一个小文件来尝试类似数据包的数据结构.到目前为止,我的代码如下:
data Fruit = Apple | Banana | Pear deriving (Eq, Show)
data Bag a = EmptyBag | Contents [(a, Integer)]
emptyBag :: Bag a
emptyBag = EmptyBag
unwrap :: [a] -> a
unwrap [x] = x
isObject theObject (obj, inte) = theObject == obj
count :: Bag a -> a -> Integer
count (Contents [xs]) theObject = snd (unwrap (filter (isObject theObject) [xs]))
count EmptyBag _ = 0
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行它时,我得到的错误无法从上下文()中使用'isObject'来推断(Eq a)....
然而,当我取出计数功能并调用snd(unwrap(filter(isObject Banana)[(Apple,1),(Banana,2)]))时,它很高兴地返回2.
任何关于这个原因的线索,或者关于编写这种数据结构的建议都将非常感激.
(==)
只能在包含的上下文中使用Eq
,但是当您声明count
不包含该上下文时.如果我正确阅读,那就是
count :: Eq a => Bag a -> a -> Integer
Run Code Online (Sandbox Code Playgroud)
如果您声明count
不包括类型,您可以要求ghci
推断类型; 或者只是询问推断类型snd (unwrap (filter (isObject Banana) [(Apple,1),(Banana,2)]))
归档时间: |
|
查看次数: |
373 次 |
最近记录: |