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
如何解决这个问题。
以下是我的代码:
insert a = a
insert2 a = Data.List.insert 4 [1,3,5,7,9]
Data.List::insert 4 [1,3,5,7,9] --the error still exists
你差点就成功了:
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]
所有这些都可以工作。