class Collection c where
empty :: c key value
singleton :: key -> value -> c key value
insert
:: Ord key
=> key -> value -> c key value -> c key value
lookup :: Ord key => key -> c key value -> Maybe value
delete :: Ord key => key -> c key value -> c key value
keys :: c key value -> [key]
values :: c key value -> [value]
toList :: c key value -> [(key, value)]
fromList :: Ord key => [(key,value)] -> c key value
Run Code Online (Sandbox Code Playgroud)
这与我读到的有关类型类的内容或我习惯的语法不同。我不明白c key value代表什么。另外,空应该是什么?它不像函数。感谢并感谢任何帮助,我是 Haskell 的新手,这让我感到困惑
这里的类型参数c不会与“具体”类型统一,而是与仍然需要两个参数的类型构造函数统一。
一个简单的集合可以是:
data ListMap a b = ListMap [(a, b)]Run Code Online (Sandbox Code Playgroud)
然后我们定义一个实例Collection:
instance Collection ListMap where
empty = ListMap []
-- …Run Code Online (Sandbox Code Playgroud)
事实上,empty这里有 as 类型c key value,so ListMap key value,那么它就是一个具体类型。
在这种情况下,类似的函数fromList :: Ord key => [(key,value)] -> c key value将导致fromList :: Ord key => [(key,value)] -> ListMap key value.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |