我正在尝试在我的自定义Bool
数据类型上,同时在运算符&&
和||
上创建Semigroup
和VerifiedSemigroup
实例:
%case data Lógico = Cierto | Falso
(&&) : Lógico -> Lógico -> Lógico
(&&) Cierto Cierto = Cierto
(&&) _ _ = Falso
(||) : Lógico -> Lógico -> Lógico
(||) Falso Falso = Falso
(||) _ _ = Cierto
因此,我首先为 &&
运算符创建了一个命名实例,并使其成为 Semigroup
的一部分:
-- Todos
instance [TodosSemigroup] Semigroup Lógico where
(<+>) a b = a && b
但是,在创建VerifiedSemigroup
实例时,我如何告诉Idris使用Lógico
的TodosSemigroup
实例呢?
instance [TodosVerifiedSemigroup] VerifiedSemigroup Lógico where
semigroupOpIsAssociative l c r = ?vsemigroupTodos
这段代码给我以下错误:
当推导
Prelude.Algebra.Main.TodosVerifiedSemigroup
的类型时, 方法semigroupOpIsAssociative
发生了错误: 无法解析类型类Semigroup Lógico