-1

操作

(filter (`notElem` "'\"").[(1,'a','%',"yes")])

给出一个错误。如何在该列表上正确应用此过滤器?

4

2 回答 2

2

你有几个严重的问题。首先,您的语法很古怪(.绝对不应该存在)。但更大的问题是您要过滤的内容属于类型[(Int,Char,Char,[Char])](即包含 4 元组的列表)。

而且您的列表只有一个元素,即(1,'a','%',"yes"). 所以无论如何过滤都是没用的。当您为过滤提供的函数必须是 type时,列表中所有元素的类型a -> Boolean在哪里。a

似乎您想要某种不稳定的异构列表或其他东西。

于 2011-04-15T23:58:36.383 回答
1

Haskell 中的.运算符是函数组合——它将两个函数组合在一起。

所以你的代码,

(`notElem` "'\"") . [(1,'a','%',"yes")]

看起来像notElem函数和一些列表的组成。那是错误的。

删除., 并确保show先到列表:

> filter (`notElem` "'\"") (show [(1,'a','%',"yes")])
"[(1,a,%,yes)]"
于 2011-04-15T23:57:02.540 回答