Haskell:我怎样才能使用“2个同名函数”?

时间:2014-01-29 23:07:49

标签: haskell

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 个答案:

答案 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]

所有这些都可行。