Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 函数的多个参数_Function_Haskell_Parameters_Arguments_Fold - Fatal编程技术网

Function 函数的多个参数

Function 函数的多个参数,function,haskell,parameters,arguments,fold,Function,Haskell,Parameters,Arguments,Fold,如何给予 break (== ' ') xxs 多个布尔参数而不更改定义?或者这是不可避免的。比如说 break (== (' ' || '\t' || '\n')) xss foldl和foldr是一种方法,但在这里它们不适用,或者至少我还不能使用它们。这就是您要找的吗 break (\x -> x == ' ' || x == '\t' || x == '\n') xss 您当前的问题实际上不是关于多个参数,而是关于break的不同谓词。让我们考虑一下中断类型: break ::

如何给予

break (== ' ') xxs
多个布尔参数而不更改定义?或者这是不可避免的。比如说

break (== (' ' || '\t' || '\n')) xss

foldl和foldr是一种方法,但在这里它们不适用,或者至少我还不能使用它们。

这就是您要找的吗

break (\x -> x == ' ' || x == '\t' || x == '\n') xss

您当前的问题实际上不是关于多个参数,而是关于break的不同谓词。让我们考虑一下中断类型:

break :: (a -> Bool) -> [a] -> ([a], [a])
这种类型的函数a->Bool称为谓词。您可以使用使用右a并返回布尔值的任何内容。这就是您的第一个代码类型检查的原因:

ghci> :t (== ' ')
(== ' ') :: Char -> Bool
现在,如果您想使用几个字符作为可能的中断符号,您需要使用另一个Char->Bool。如果字符是固定的,并且您没有很多字符,您可以使用列表[Char]和元素:

我们可以将其用作break的谓词:

在这一点上,您还可以更改myBreak,使其包含一个字符列表,此时您将获得:

myBreak' :: [Char] -> [Char] -> ([Char], [Char])
myBreak' limiters = break (`elem` limiters)
-- myBreak' limiters str = break (`elem` limiters) str

HTH

break-flip-elem\t\n?您可以为其第一个参数指定break-any函数。所以你可以创建一个新函数,它是你想要的谓词,并传递给break。@Zeta是的,它可以工作,但是你能解释一下吗?elemchecks如果列表中有什么东西,那么这将检查参数是“\t”还是“\n”字符串是字符列表-现在,由于elem希望参数的顺序错误,Zeta必须先翻转函数参见:Data.Char.isSpace,Prelude.words.这个答案很好,因为它在OP的层面上是正确的,并且在没有过度描述的情况下打开了一个新世界。
myBreak = break (`elem` yourCharacters)
myBreak' :: [Char] -> [Char] -> ([Char], [Char])
myBreak' limiters = break (`elem` limiters)
-- myBreak' limiters str = break (`elem` limiters) str