无法导入 Data.List。\\
Trouble importing Data.List.\\
我正在尝试编写一个 Haskell 模块,它使用来自 Data.List 的集合差异运算符,但是当我尝试专门导入它时,我在尝试时收到消息 parse error on input ‘\’
导入我的模块。
这是一个具有相同问题的示例模块:
module SetDiff (
setDiff
) where
-- import Data.List -- No error when this line is used
import Data.List (\) -- Causes the parse error
setDiff l1 l2 = l1 \ l2
导入所有 Data.List
可以避免这个问题,但是有没有一种方法可以执行仅指定 \
运算符的导入?
好吧 \
是一个 运算符 ,它将在幕后调用相应的 (\) :: Eq a => [a] -> [a] -> [a]
函数, 所以需要导入函数名,包括括号:
import Data.List (<b>(</b>\<b>)</b>)
毕竟,您导入了一个 functions 列表(以及类型、类型类等其他元素),并且“name”的函数是(\)
,不是\
.
所以在外括号之间,我们列出了我们要导入的函数,而内括号,不作为"groupers"或一些独立的语法元素,只作为函数名的一部分。
例如:
Prelude> import Data.List ((\))
Prelude Data.List> [1, 4, 2, 5] \ [1, 3, 0, 2]
[4,5]
请注意,您可以将 setDiff
函数声明为:
setDiff :: Eq a => [a] -> [a] -> [a]
setDiff = (\)
所以没有参数。
我正在尝试编写一个 Haskell 模块,它使用来自 Data.List 的集合差异运算符,但是当我尝试专门导入它时,我在尝试时收到消息 parse error on input ‘\’
导入我的模块。
这是一个具有相同问题的示例模块:
module SetDiff (
setDiff
) where
-- import Data.List -- No error when this line is used
import Data.List (\) -- Causes the parse error
setDiff l1 l2 = l1 \ l2
导入所有 Data.List
可以避免这个问题,但是有没有一种方法可以执行仅指定 \
运算符的导入?
好吧 \
是一个 运算符 ,它将在幕后调用相应的 (\) :: Eq a => [a] -> [a] -> [a]
函数, 所以需要导入函数名,包括括号:
import Data.List (<b>(</b>\<b>)</b>)
毕竟,您导入了一个 functions 列表(以及类型、类型类等其他元素),并且“name”的函数是(\)
,不是\
.
所以在外括号之间,我们列出了我们要导入的函数,而内括号,不作为"groupers"或一些独立的语法元素,只作为函数名的一部分。
例如:
Prelude> import Data.List ((\))
Prelude Data.List> [1, 4, 2, 5] \ [1, 3, 0, 2]
[4,5]
请注意,您可以将 setDiff
函数声明为:
setDiff :: Eq a => [a] -> [a] -> [a]
setDiff = (\)
所以没有参数。