Haskell:如何使用该函数具有相同名称但属于不同的包?
这是我的代码
insert a = a
insert2 a = Data.List.insert 4 [1,3,5,7,9]
错误是:
不在范围内:数据构造函数'Data.List'。
即使我将其更改为
Data.List::insert 4 [1,3,5,7,9] --the error still exists
我该如何解决?
答案 0 :(得分:16)
你几乎拥有它:
Data.List.insert 4 [1, 3, 5, 7, 9]
并且
Main.insert 4 [1, 3, 5, 7, 9]
-- or if not in Main
Full.Qualified.CurrentPackage.insert 4 [1, 3, 5, 7, 9]
但你必须先导入包。我会推荐
import qualified Data.List
-- or
import qualified Data.List as L
如果你使用第二种形式,你可以这样做
L.insert 4 [1, 3, 5, 7, 9]
作为一个完整示例,您的文件可能看起来像
module Main where
import qualified Data.List
import qualified Data.List as L
insert x xs = undefined -- Fill in your implementation here
main = do
print $ insert 4 [1, 3, 5, 7, 9]
print $ Main.insert 4 [1, 3, 5, 7, 9]
print $ Data.List.insert 4 [1, 3, 5, 7, 9]
print $ L.insert 4 [1, 3, 5, 7, 9]
所有这些都可行。