Haskell列表差异

21

我想要做一个列表的差异。找到了直接在 Prelude 中使用的运算符\\\\,它可以实现列表的差异。但是会出现错误Not in scope: '\\\\'。这里是我的简单命令行解释器:

Prelude>  ([1,2,3] ++ [5,6])   -- works like expected
[1,2,3,4,5,6]

prelude>  ([1,2,3] \\\\ [1,2])   -- erros occurs
<interactive>:1:11: Not in scope: "\\\\"

感谢您解释我的错误。

1个回答

47

应该使用 \\ 而不是 \\\\。您还需要导入 Data.List 模块。

Prelude List> import Data.List
Prelude List> ([1,2,3] \\ [1,2])
[3]

1
使用层次模块,可以这样导入:import Data.List。(在 GHCi 中,需要使用 :module + Data.List 代替。) - Antal Spector-Zabusky
2
哇!对我来说这是一个发现,你可以在ghci中只需键入Prelude> import Data.List导入模块。我之前一直使用:m +Data.List - max taldykin
6
@max taldykin,虽然没有关联,但您可能也会喜欢 :set prompt ">>> " 或任何您喜欢的字符串。我导入的模块列表占据了整个控制台一行的位置,这样很不方便。请您自行决定是否需要翻译术语“console”和“module”。 - luqui
当你import Data.Set时,这个不起作用。有什么解决方法吗? - daparic
当你同时导入 Data.ListData.Set 时,(\\) 是有歧义的。有多种解决方案。例如,你可以使用 import qualified Data.Set 或者通过使用 import Data.Set hiding ((\\)) 隐藏 (\\) 的集合版本。请参阅 Haskell Wiki 以获取更多关于导入的详细信息。 - Michal

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