前缀函数作为过滤函数的谓词

Gho*_*ies 3 haskell predicate infix-notation filter prefix

这是类型签名和filter函数的定义,从了解你是一个很好的Haskell!:

filter' :: (a -> Bool) -> [a] -> [a]
filter' _ [] = []
filter' p (x:xs)
    | p x = x : filter' p xs
    | otherwise = filter' p xs
Run Code Online (Sandbox Code Playgroud)

书中的用法示例elem如下:

filter' (`elem` ['a'..'z']) "Hell0!"
Run Code Online (Sandbox Code Playgroud)

哪个回报:

"ell"
Run Code Online (Sandbox Code Playgroud)

在这个特定的例子中,是否有可能使用elem前缀函数而不是中缀函数作为谓词?

在更一般的意义上,是否有一种方法只提供第二个参数以部分应用前缀函数?

在此先感谢您的帮助!

Bar*_*icz 5

通过创建一个lambda(适用于超过2个参数的函数):

filter' (\a -> elem a ['a'..'z']) "Hell0!"
Run Code Online (Sandbox Code Playgroud)

或者使用flip:

filter' (flip elem ['a'..'z']) "Hell0!"
Run Code Online (Sandbox Code Playgroud)