加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

是否存在与Perl或Ruby中的触发器运算符等效的函数式编程概念?

发布时间:2020-12-15 21:54:23 所属栏目:大数据 来源:网络整理
导读:Ruby(和Per??l)有一个触发器的概念: file = File.open("ordinal")while file.gets print if ($_ =~ /third/) .. ($_ =~ /fifth/)end 给出了一系列序数,例如 firstsecondthirdfourthfifthsixth 当它达到“第三”时开始打印,当达到“第五”时停止打印: third
Ruby(和Per??l)有一个触发器的概念:
file = File.open("ordinal")
while file.gets
  print if ($_ =~ /third/) .. ($_ =~ /fifth/)
end

给出了一系列序数,例如

first
second
third
fourth
fifth
sixth

当它达到“第三”时开始打印,当达到“第五”时停止打印:

third
fourth
fifth

是否存在类似于此的函数式编程概念,或者通常用takewhiles来描述?我不是在问一个特定的语言,而是用什么术语来形容它.

解决方法

在像haskell这样的函数式语言中,你可以将翻转和翻转条件作为谓词传递,并根据它过滤输入列表.例如,以下是haskell中触发器的定义(如果你不知道haskell,请不要担心实现 – 关键部分是如何使用它):
flipflop flip flop = 
  uncurry (++) . second (take 1) . break flop . dropWhile (not . flip)

这是如何使用它:

> flipflop (== 3) (== 5) [1..10]
[3,4,5]

这是通过使用更高阶函数来制作有效的新语言构造的一个例子.

我不知道在功能语言中是否有该特殊名称.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读