Я пытаюсь реализовать WriterT с пользовательским типом данных.Я реализовал моноид, как того требует runWriterT.Но я не могу скомпилировать код.Я получаю ошибку
Не удалось вывести (полугруппа (Env a)), возникающую из суперклассов объявления экземпляра, из контекста: Num a
import Control.Monad
import Control.Monad.Trans.Reader
import Control.Monad.IO.Class
import Control.Monad.Trans.Writer
import Control.Monad.Trans
import Data.Monoid
newtype Env a = Env { getEnv :: a } deriving (Eq, Ord, Read, Show)
instance Num a => Monoid (Env a) where
mempty = Env 0
Env x `mappend` Env y = Env (x + y)
writeSomething :: (Num a) => WriterT (Env a) IO ()
writeSomething = do
tell $ Env 1
tell $ Env 3