这对于为下一个可怜的树液添加一些可搜索的东西同样多,但我有兴趣知道它为什么不是错误.
我需要postgresql-simple中的FromRow类型类,但忘了它在自己的包中.
import qualified Database.Postgresql.Simple as P
Run Code Online (Sandbox Code Playgroud)
哎呀 - 只想要.FromRow子模块
import qualified Database.Postgresql.Simple.FromRow
Run Code Online (Sandbox Code Playgroud)
当然,不需要它合格,所以剥掉了名字.但是,我忘了删除"qualified"关键字.
因为我没有发现拼写错误,所以会产生错误,而且会让我头疼不已:
Not in scope: type constructor or class `FromRow'
Perhaps you meant `Database.PostgreSQL.Simple.FromRow.FromRow' (imported from Database.PostgreSQL.Simple.FromRow)
Run Code Online (Sandbox Code Playgroud)
所以 - 这是一个问题,为什么一个未命名的合格导入不是错误?对某些事情有用吗,或者我是第一个犯这个错误的傻人?
Rom*_*aka 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