npo*_*cop 4 haskell map set trie singleton-type
如果我有键到值的映射,那么键组可以实现为固定虚拟值的键映射.
傻瓜有很多候选人:
data- 没有构造函数的定义类型forall a . a)对我来说最明显的解决方案是使用股票单例类型,()但case我可以区分()底部,所以我认为内存表示()包括间接.
我有两个问题:
Map.fromList [(1, ()), (2, ())]会比更多的内存let dummy = () in Map.fromList [(1, dummy), (2, dummy)]?dummy构建集合的值是多少?kos*_*kus 11
Nullary构造函数只分配一次.然后共享它们的所有用途(在GHC中;这种行为不是由Haskell标准决定的).
这()是单元类型的无效构造函数().所以()在整个地方使用几乎不需要任何记忆.如果将实例化类型参数设置为(),则仍将为该参数的存在付费.这就是为什么例如有一个专门Set a而不是使用Map a ().
对于键值数据结构,您需要具有适当值的类型.因此,()是正确的选择,而空数据类型则不是.多态类型,例如,forall a. a如果用作参数,则另外需要包装在另一种数据类型中或需要不可靠性,这通常不受支持.
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |