Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not find module `Control.Monad.Reader'

Tags:

haskell

Today when I tried to compile my code in Geany I got this error

Could not find module `Control.Monad.Reader':
  it was found in multiple packages: monads-fd-0.1.0.1 mtl-1.1.0.2
Compilation failed.

I get the same for the Writer monad; I thought I should remove one of those packages, but I do not want to break other packages, so now what should I do, yesterday everything worked without any problem.

like image 546
arpho Avatar asked Feb 26 '23 11:02

arpho


1 Answers

It looks like you have recently installed monads-fd, perhaps as a dependency of something else you installed. Both monads-fd and mtl packages contain the module Control.Monad.Reader, so GHC doesn't know which one to use when you compile some code that imports it. You need to resolve the ambiguity somehow:

  • If you are using GHC or GHCi directly
    • either use a -hide-package <package> flag on the command line to hide one of the packages, or
    • hide the package by default using ghc-pkg hide <package>. You may need to use ghc-pkg --user hide <package> if the package was installed in your home directory (the default on some platforms).
  • You can use Cabal, and say exactly which one of the conflicting packages you depend on using the build-depends field in your .cabal file
like image 80
Simon Marlow Avatar answered Mar 03 '23 14:03

Simon Marlow