小编V0l*_*337的帖子

如何使用bind(>> =)实现功能

我写了一个过滤功能:

f :: (a -> Bool) -> [a] -> [a]
f p xs = case xs of
         [] -> []
         x : xs' -> if p x
                    then x : f p xs'
                    else f p xs'
Run Code Online (Sandbox Code Playgroud)

要了解绑定,我想使用绑定实现此功能。我在想什么:

f p xs = xs >>= (\x xs -> if p x then x : f p xs else f p xs)
Run Code Online (Sandbox Code Playgroud)

但是我得到这个错误:

* Couldn't match expected type `[a]' with actual type `[a] -> [a]'
    * The lambda expression `\ x xs …
Run Code Online (Sandbox Code Playgroud)

monads haskell list

4
推荐指数
1
解决办法
86
查看次数

标签 统计

haskell ×1

list ×1

monads ×1