Я пытаюсь сделать экземпляр 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
, как я могу рассказать Идрису использовать пример TodosSemigroup
Lógico
?
instance [TodosVerifiedSemigroup] VerifiedSemigroup Lógico where
semigroupOpIsAssociative l c r = ?vsemigroupTodos
Этот код дает мне следующее сообщение об ошибке:
When elaborating type of
Prelude.Algebra.Main.TodosVerifiedSemigroup
, methodsemigroupOpIsAssociative
: Can't resolve type classSemigroup Lógico
@dfeuer, я думаю, что проблема в том, что не будет реализован. – chamini2