【问题标题】:Consecutive pairs from list in haskellhaskell中列表中的连续对
【发布时间】:2016-08-08 19:22:37
【问题描述】:

如何在没有递归的情况下从列表中获取连续对(元组)的列表?

例如:[1, 2, 3, 4] 将是 [(1, 2), (2, 3), (3, 4)]

【问题讨论】:

  • 另外,(\xs-> [(x,y) | (x:y:_)<- tails xs])tails 是用递归定义的,但 zip 也是如此。

标签: list haskell tuples


【解决方案1】:

\xs -> zip xs $ tail xszip <*> tail

【讨论】:

  • 后者最好写成zip<*>tail。我实际上不是这些函数函子 hack 的忠实粉丝,但我不得不承认这里非常好。
  • 这里没有保存任何括号,所以whatevz但可以肯定。
  • ap 现在有点过时了,因为 ApplicativeMonad 的超类(至少在 GHC 中,并且假设它被 Haskell 2014 标准采用)。
  • 对于像我这样的其他菜鸟,正在使用的 Applicative 的相关实例是常见第一个参数类型 ((->) r) 的函数的实例,您有 <*> f g x = f x (g x),显然也称为S 组合子。
  • 这适用于空列表的事实对我来说有点微妙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2021-05-04
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
相关资源
最近更新 更多