Ruby(和 Perl)有一个触发器的概念:
file = File.open("ordinal")
while file.gets
print if ($_ =~ /third/) .. ($_ =~ /fifth/)
end
它给出了一个序数列表,例如
first
second
third
fourth
fifth
sixth
打印到“third”时开始打印,打印到“fifth”时停止:
third
fourth
fifth
是否有与此类似的函数式编程概念,或者这通常用 takewhile
来描述?我问的不是特定语言,而是您会用什么术语来描述它。
最佳答案
在像 haskell 这样的函数式语言中,您可以将触发器和触发器条件作为谓词传递,并根据它过滤输入列表。比如下面是haskell中flipflop
的定义(不懂haskell的不用担心实现,关键是怎么用):
flipflop flip flop =
uncurry (++) . second (take 1) . break flop . dropWhile (not . flip)
它是这样使用的:
> flipflop (== 3) (== 5) [1..10]
[3,4,5]
这是一个通过使用高阶函数来构建有效的新语言结构的例子。
我不知道该结构在函数式语言中是否有专门的名称。
关于ruby - 是否存在与 Perl 或 Ruby 中的触发器运算符等效的函数式编程概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6462018/