3

これは、次の悪い樹液を検索できるものを追加するのと同じくらいですが、なぜそれがエラーではないのか知りたいです.

postgresql-simple の FromRow 型クラスが必要でしたが、それが独自のパッケージに含まれていることを忘れていました。

import qualified Database.Postgresql.Simple as P

おっと - .FromRow サブモジュールが欲しいだけです

import qualified Database.Postgresql.Simple.FromRow

もちろん、修飾する必要はなかったので、末尾の名前を削除しました。ただし、「修飾された」キーワードを削除するのを忘れていました。

タイプミスを見つけられないため、エラーが発生し、頭を悩ませています。

Not in scope: type constructor or class `FromRow'
Perhaps you meant `Database.PostgreSQL.Simple.FromRow.FromRow' (imported from Database.PostgreSQL.Simple.FromRow)

それで、これは質問です。名前のない修飾されたインポートがエラーではないのはなぜですか? それは何かの役に立ちますか、それとも私はこの間違いを犯すほど愚かな最初の人ですか?

4

1 に答える 1

14

qualifiedインポートのas独立した機能です。

qualified名前は修飾名 (つまり、モジュール名を含む名前) の下でのみ使用可能になると述べています。

as名前を修飾するために使用されるモジュール名を変更するだけです。

したがって、モジュールをインポートするには 4 つの異なる方法があります。

  • import Database.Postgresql.Simple— 修飾名と非修飾名の両方が表示されます。資格のあるものは資格を持つ必要がありますDatabase.Postgresql.Simple

  • import Database.Postgresql.Simple as P— 修飾名と非修飾名の両方が表示されます。資格のあるものは資格を持つ必要がありますP

  • import qualified Database.Postgresql.Simple— 修飾された名前のみが表示され、修飾する必要がありますDatabase.Postgresql.Simple

  • import qualified Database.Postgresql.Simple as P— 修飾された名前のみが表示され、修飾する必要がありますP

于 2013-02-24T10:14:33.973 に答える