Haskell:如何使用“同名的2个函数”?

4

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

如何解决这个问题。
1个回答

15

你差点就成功了:

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]

所有这些都可以工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接