У меня есть тип данных, который зависит от предиката P: a -> Type, что означает, что некоторые из его конструкторов данных имеют неявный P x в качестве аргумента.Я бы хотел, чтобы idris могла автоматически сделать вывод, что это неявно.Для этого я аннотировал неявное ключевое слово auto и написал функцию isP: (x: a) -> Dec (P x) с аннотацией% hint перед объявлением типа.А именно, что-то вроде:
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, потому что Идрис утверждает, что он не может вывестиprf.
Это потому, что prf имеет тип P x вместо Dec (P x) или потому, что флаг подсказки% не импортируется?
В любом случае, как я могу получитьИдрис, чтобы использовать значение Dec, чтобы попытаться найти неявное?