Control.monad.state وجدت في حزم متعددة Haskell
سؤال
أثناء تقييم الخط "استيراد Control.Monad.State" في وحدة Haskell، يعطيني GHC الخطأ التالي:
Could not find module `Control.Monad.State': it was found in multiple packages: monads-fd-0.0.0.1 mtl-1.1.0.2 Failed, modules loaded: none.
كيف يمكنني حل هذا الصراع؟
المحلول
لديك العديد من الخيارات. أيضاً:
ghc-pkg hide monads-fd
. وبعد سيؤدي ذلك إلى تجاهل GHC و GHCI وجودmonads-fd
افتراضيا حتى تحصل في وقت لاحقghc-pkg expose monads-fd
, ، ولكن البرامج المثبتة بواسطة Cabal ستظل قادرة على البناء ضدها.- استخدم ال
{-# LANGUAGE PackageImports #-}
براغما، وتغيير بيان الاستيراد الخاص بك لimport "mtl" Control.Monad.State
. - استخدم Cabal لإنشاء مشروعك، وتحديد
mtl
في الBuild-depends
خط.
الأول هو الأفضل للقرصنة عارضة، والأخير هو الأفضل للإنتاج.
هذه كلها تفترض أنك تريد mtl
الوحدة وليس monads-fd
وحدة؛ تبادل لهم خلاف ذلك.
نصائح أخرى
كلا الحزمتين تقوم بتنفيذ Control.monad.state و GHC لا يعرف التنفيذ الذي يجب أن يفضله، لذلك تحتاج إلى إخفاء أحد الحزم من GHC. يبدو وكأنه -ignore-package <name>
العلم GHC قد يساعدك هنا.
لا تنتمي إلى StackOverflow