【发布时间】:2020-01-12 17:58:16
【问题描述】:
我想知道是否可以实现类似contrib的Data.SortedMapwhere,例如,键类型可以是Key n,值类型是Value n,其中n是相同的Nat?
对于Map (Key n) (Value n)(以“No such variable n”失败),一些常用函数将具有类似这些类型
Key : Nat -> Type
Value : Nat -> Type
lookup : {n : Nat} -> Key n -> WonderMap Key Value -> Maybe (Value n)
insert : {n : Nat} -> Key n -> Value n -> WonderMap Key Value -> WonderMap Key Value
我使用依赖对尝试了以下操作
MyMap : Type
MyMap = SortedMap (n ** Key n) (n **Value n)
但我认为这里的ns 不是同一个,所以它被解释为
MyMap = SortedMap (n ** Key n) (x ** Value x)
换句话说,Key 和 Value 类型没有按照我想要的方式“连接”,即 Value n 只能存储在 Key n 和 lookup 下,对于 Key n 总是返回 @ 987654337@。
和
MyOtherMap : Nat -> Type
MyOtherMap n = SortedMap (Key n) (Value n)
应该创建一个由n : Nat 索引的映射类型,因此我无法将Value 1 值存储在Key 1 键下和 Value 7 值在同一映射中的Key 7 键下。
是否可以实现我想要的映射类型,其中键类型族用于存储相应的值类型族? (除了每个n : Nat 有一个MyOtherMap,然后将所有这些捆绑在一个更大的结构中,请参阅我的答案)
【问题讨论】:
标签: idris