困扰Haskell中的函数应用程序和函数组合

时间:2011-04-15 23:51:57

标签: list function haskell function-composition

操作

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

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

2 个答案:

答案 0 :(得分:2)

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

您的列表只有一个元素,即(1,'a','%',"yes")。所以过滤无论如何都是无用的。当您提供的过滤功能必须是a -> Boolean类型时,其中a是列表中所有元素的类型。

好像你想要某种不稳定的异类列表或其他东西。

答案 1 :(得分:1)

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

所以你的代码,

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

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

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

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