s t a a -> a -> s -> tУ меня есть тип -
data Client auth act = Client {
_clientManager :: H.Manager
, _clientAuth :: auth
, _clientErrors :: [WebError]
}
makeFields ''Clientи я пишу полугруппу -
instance Semigroup auth => Semigroup (Client auth act) where
a <> b = a & errors <>~ (b^.errors) & auth <>~ (b^.auth)но оно хочет в ней не Semigroup auth, а Monoid auth. Почему?! (мне не все равно, потому что я знаю как написать полугруппу для моих потенциальных `auth`-ов, но для них нет нейтрального элемента
a{_errors = _errors b}
на скучном Хаскеле это пишется так: data Client auth act = Client { manager :: Manager , auth :: auth , errors :: [WebError] } instance Semigroup auth => Semigroup (Client auth act) where a <> Client{auth, errors} = a{auth, errors}
Не, там же надо скомбинировать вторые и третьи поля
а где вы тип (<>~) посмотрели?
Обсуждают сегодня