【发布时间】:2019-09-12 01:35:50
【问题描述】:
我有一个依赖于谓词 P : a -> Type 的数据类型,这意味着它的一些数据构造函数引用了一个隐式 P x 作为参数。我希望 idris 能够自动推断出这个隐含的。为此,我使用关键字 auto 对隐式进行了注释,并在类型声明之前编写了一个带有 %hint 注释的函数 isP : (x : a) -> Dec (P x)。即,类似:
module P
P : a -> Type
%hint
isP : (x : a) -> Dec (P x)
在一个单独的文件中
module Main
import P
data Foo : Type where
Bar : (x : a) -> .{auto prf : P x} -> Foo
也就是说,我不能声明 Foo 类型的值,因为 Idris 声称它无法推断 prf。
这是因为 prf 的类型是 P x 而不是 Dec (P x) 还是因为没有导入 %hint 标志?
在任何一种情况下,如何让 Idris 使用 Dec 值来尝试查找隐式?
【问题讨论】:
标签: annotations idris dependent-type