idris - 伊德里斯没有减少地图查找
问题描述
为什么不减少函数调用?如何在编译时验证映射是否包含键值对?
import Data.SortedMap
N : SortedMap String Type
N = fromList
[ ("a", Nat)
, ("b", String)
]
t : lookup "a" N = Just Nat
t = Refl
Type mismatch between
Just Nat = Just Nat (Type of Refl)
and
lookup "a" (fromList [("a", Nat), ("b", String)]) = Just Nat (Expected type)
Specifically:
Type mismatch between
Just Nat
and
lookup "a" (fromList [("a", Nat), ("b", String)])
解决方案
它必须与SortedMap
使用普通List
工作的版本的实现有关:
N : List (String, Type)
N =
[ ("a", Nat)
, ("b", String)
]
t : lookup "a" N = Just Nat
t = Refl
根据文档Data.SortedMap.lookup
也是总数,所以它应该减少。可能原因是其中的函数和数据类型SortedMap
似乎具有导出限定符,而 Data.List 中的函数和数据类型使用public export
.
推荐阅读
- c - 我是编码新手,遇到了 cs50 的密码问题
- php - 使用 WordPress 特色图片作为 CSS 背景图片
- python - 通过 Erlport 执行的函数停止响应
- html - 我有一张桌子,为什么我的中心单元比其他单元长
- java - 使用 WebClient 进行非阻塞 REST 调用时的显着失败率
- java - 使用抽象方法实现接口
- tensorflow - XLA rng-bit-generator 占用太多内存
- c - 我在 C 的链表中有问题(第一个节点为空)
- docker - docker run 与 conda 环境交互已激活
- ruby-on-rails - 操作文本附件不适用于生产