Em um módulo, defino uma classe:
class Monad m => MonadTime m where
currentTime :: m UTCTime
O MonadTime
é exportado.
No módulo diferente, eu queria criar uma instância:
-- MonadTime is imported
instance MonadTime IO where
currentTime :: IO UTCTime
currentTime = Data.Time.Clock.getCurrentTime
No entanto, a questão é:
'currentTime' não é um método (visível) da classe 'MonadTime'
Se eu mover a instância para o primeiro módulo, onde a classe está definida, tudo funciona. Mas minha ideia era disponibilizar a implementação no módulo principal.
Como devo resolver isso?
Você precisa exportá-lo com o método, então:
e no outro módulo: