所以我定义了一个匹配'功能如下
let match :: Eq a => a -> [a] -> [Int]; match x = map (fromEnum . (==x))
现在我试图定义一个新的' countN'计算匹配的函数。当我尝试
let countN :: a -> [a] -> Int; countN x xs = ? $ match x xs
我收到表单错误:'解析输入错误'?''
答案 0 :(得分:1)
您收到错误是因为编译器正在将?
解析为运算符,并且它连续看到两个运算符,第二个运算符是$
,这是非法语法。看起来你从那里有?
的地方复制/粘贴了这个,你觉得那里有什么?
编辑:
详细说明,你会对像
这样的表达做些什么myFunc x = + * ++ / x
对于人类和任何Haskell编译器,这个表达式毫无意义。所有这些运营商在那里意味着什么?它不能是组合,类型不会排列,而且没有足够的参数。这是编译器在看到? $ match x xs
时遇到的问题。