我想做以下事情:
data Foo : (a : Type) -> (b : Type) -> (c : a -> b -> Type) -> Type where
Bar : a -> (c a) -> Foo a b c
但是我收到以下错误:
When checking type of test.Bar:
When checking argument c to test.Foo:
Type mismatch between
Type -> Type (Type of c)
and
a -> b -> Type (Expected type)
Specifically:
Type mismatch between
Type
and
b -> Type
这似乎对我有用。 c
表达式Foo a b c
中的b -> Type
类型正确,但Idris认为它的类型为(c a)
,或者我认为是libxml_use_internal_errors(true);
$doc = simplexml_load_file($file_name);
$errors = libxml_get_errors();
echo "<pre>" . print_r($errors,true) . "</pre>";
libxml_clear_errors();
。
我错过了什么,或者这是伊德里斯的限制?
答案 0 :(得分:3)
(c a)
的类型为b -> Type
,而数据构造函数的所有字段都必须包含Type
类型。正如伊德里斯所说,这是一个错误。您的c
类型构造函数有两个参数,但您只将其应用于单个a
。