标准名称(过滤器p xs,过滤器(not.p)xs)

Tri*_*tos 10 haskell functional-programming naming-conventions

haskell中是否有一些函数在一个列表遍历(这里是两个)中求值(过滤p xs,filter(not.p)xs)或者在这种函数的函数式编程中是否有一些通用名称?

fry*_*bob 33

首先看一下你需要的类型:

Prelude> :t \p xs -> (filter p xs, filter (not . p) xs)
\p xs -> (filter p xs, filter (not . p) xs)
  :: (a -> Bool) -> [a] -> ([a], [a])
Run Code Online (Sandbox Code Playgroud)

Hoogle是你的朋友:

Prelude> :hoogle (a -> Bool) -> [a] -> ([a], [a])
Prelude break :: (a -> Bool) -> [a] -> ([a], [a])
Prelude span :: (a -> Bool) -> [a] -> ([a], [a])
Data.List break :: (a -> Bool) -> [a] -> ([a], [a])
Data.List partition :: (a -> Bool) -> [a] -> ([a], [a])
Data.List span :: (a -> Bool) -> [a] -> ([a], [a])
Run Code Online (Sandbox Code Playgroud)

现在试试这些功能:

Prelude> break odd [1..10]
([],[1,2,3,4,5,6,7,8,9,10])
Prelude> span odd [1..10]
([1],[2,3,4,5,6,7,8,9,10])
Prelude> import Data.List
Prelude Data.List> partition odd [1..10]
([1,3,5,7,9],[2,4,6,8,10])
Run Code Online (Sandbox Code Playgroud)

  • 谁将打造这个网站"让我为你做好帮助"? (2认同)
  • 以下是如何在ghci中获取`:hoogle`命令:http://www.haskell.org/haskellwiki/Hoogle#GHCi_Integration (2认同)
  • 感谢您展示如何找到它!这是我有过的最好的答案之一. (2认同)