2014-01-15 12 views
6

ich das Control.Monad.Writer Modul so zu importieren versucht:Control.Monad.Writer in mehreren Paketen gefunden haskell

import Control.Monad.Writer 

ghc Version 7.4.1 gibt den folgenden Fehler:

Ambiguous module name `Control.Monad.Writer': 
     it was found in multiple packages: monads-tf-0.1.0.1 mtl-2.1.1 

Es gibt eine Frage mit einem ähnlichen Problem und einem Workaround here.

Trotz der Lösung in diesem Thread gegeben meine Fragen sind:
Ist dies die Standardkonfiguration von Kabale und ghc?
- Wenn ja: gibt es einen Grund für das Modul in zwei Paketen standardmäßig zu sein?
- Wenn nicht: was (möglicherweise) passiert ist und kann es rückgängig gemacht werden?

Wenn es ankommt: Ich arbeite an Debian 7.3 wheezy und installiert das haskell-platform Paket. Außerdem habe ich einige Pakete mit cabal install installiert.

Vielen Dank im Voraus!

Antwort

6

Ja, das ist "Standard". Der Grund ist ein historisches Refactoring des mtl Pakets, um zwei verschiedene Arten von Handlingtypklassen mit mehreren Parametern aufzunehmen, wie die MonadWriter Klasse: type families und functional dependencies.

Das Paket mtl behält den älteren Ansatz der funktionalen Abhängigkeiten bei, während monads-tf den neueren Typ Familienansatz hat.

Da es jetzt Bibliotheken im Haskell-Ökosystem gibt, die monads-tf verwenden, ist es unvermeidbar, dass beide in der Paketdatenbank auf typischen Installationen landen - ich persönlich habe es seit einigen Wochen erlebt.

+1

Finden Sie neue Pakete mit 'Monads-Tf' geschrieben? Ich dachte, dass es durch die Popularität von 'mtl' effektiv veraltet wurde. Können Sie das Problem mit 'PackageImports' lösen? –

+1

Ich traf das meistens in Ghci. Wie die verknüpften Antworten nahelegen, müssen Sie in Cabal-Paketen nur auswählen, worauf Sie angewiesen sind. Ich habe eigentlich nicht aufgespürt, was in Monaden-tf gezogen, ich weiß nur, dass ich es habe :-) –

+1

Von http://packdeps.haskellers.com/reverse/monads-tf, vermute ich, 'MonadCatchIO-transformers' das Sein die indirekte Ursache: http://packdeps.haskellers.com/reverse/MonadCatchIO-transformers –

Verwandte Themen