Bool) -> [a] -> [a] 使用示例 takeWhile ( x 3 length x < 4) ["aa-6ren">
gpt4 book ai didi

haskell - Haskell 中的 "invisible"函数参数如何工作?

转载 作者:行者123 更新时间:2023-12-02 15:31:38 26 4
gpt4 key购买 nike

我所说的一个例子是 takeWhile

takeWhile :: (a -> Bool) -> [a] -> [a] 

使用示例

takeWhile (< 3) [1,2,3,4,1,2,3,4] == [1,2]

据我所知(< 3)变成(a < 3)其中 a 是正在检查的列表中的当前项目。

这是如何在 Haskell 中完成的以及我如何能够移动到哪里 a这样我就可以做类似的事情

takeWhile ((length a) < 4) ["aaa", "aaaaa"]

最佳答案

(< 3)称为“节”并且仅适用于中缀运算符。它是编写缩写函数的语法糖。 (< 3)相当于 \x -> x < 3(3 <)相当于 \x -> 3 < x .

因此,(< 3)是一个只有一个参数的函数,返回 Bool 。这正是takeWhile预计。

length ,你必须完整地编写一个函数:

takeWhile (\x -> length x < 4) ["aaa", "aaaaa"]

或者定义你自己的函数,你可以柯里化(Currying):

shorterThan n x = length x < n

takeWhile (shorterThan 4) ["aaa", "aaaaa"]

如果你喜欢冒险,你可以写

takeWhile ((< 4) . length) ["aaa", "aaaaa"]

或者也许以更易读的方式

(??) = flip (.)

takeWhile (length ?? (< 4)) ["aaa", "aaaaa"]

关于haskell - Haskell 中的 "invisible"函数参数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47361314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com