Я пытаюсь создать экземпляр Semigroup
и VerifiedSemigroup
в моем пользовательском типе Bool
как на операторе &&
, так и на операторе ||
:
%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 использовать экземпляр TodosSemigroup
Lógico
?
instance [TodosVerifiedSemigroup] VerifiedSemigroup Lógico where
semigroupOpIsAssociative l c r = ?vsemigroupTodos
Этот код дает мне следующую ошибку:
При разработке типа
Prelude.Algebra.Main.TodosVerifiedSemigroup
, методsemigroupOpIsAssociative
: Не удается разрешить класс типаSemigroup Lógico