Haskell相当于Ruby的slice_when

杰西

我是Haskell的新手,我想一个函数像Ruby的slice_when一样工作:

slice_when Ruby

a = [1,2,4,9,10,11,12,15,16,19,20,21]
b = a.slice_when {|i, j| i+1 != j }
p b.to_a #=> [[1, 2], [4], [9, 10, 11, 12], [15, 16], [19, 20, 21]]

哈斯克尔

ghci > slice_when (\x y -> x+1 /= y) [1,2,4,9,10,11,12,15,16,19,20,21] 

=> [[1, 2], [4], [9, 10, 11, 12], [15, 16], [19, 20, 21]]

非常感谢你。

亚历克西斯·金

sliceWhen我相信这是一个可以像您想要的那样实现的实现:

sliceWhen :: (a -> a -> Bool) -> [a] -> [[a]]
sliceWhen _ []  = []
sliceWhen _ [x] = [[x]]
sliceWhen f (x:y:xs)
  | f x y     = [x] : sliceWhen f (y:xs)
  | otherwise = let z:zs = sliceWhen f (y:xs)
                in (x:z) : zs

上面的函数在每个边界上运行提供的谓词,如果返回True,则会创建一个接缝。否则,它将“当前”值附加到列表其余部分的第一个元素上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Haskell相当于Ruby的slice_when

来自分类Dev

Haskell相当于包含

来自分类Dev

相当于Python String Slice的C ++?

来自分类Dev

相当于Json或Edn的Haskell

来自分类Dev

Scala相当于Haskell的地图insertWith

来自分类Dev

在OCaml中相当于Haskell的zipwith

来自分类Dev

F#相当于Haskell的$

来自分类Dev

相当于Haskell序列的Scala

来自分类Dev

相当于ruby Gem文件的Python

来自分类Dev

Ruby的Python的defaultdict相当于什么?

来自分类Dev

相当于Java中的Ruby Hash

来自分类Dev

相当于Ruby中chmod + x

来自分类Dev

相当于Ruby'is_a?'的Python

来自分类Dev

PHP相当于Ruby的拯救

来自分类Dev

Swift相当于Ruby的“收益”

来自分类Dev

相当于Ruby的`send`的Javascript

来自分类Dev

相当于group_by和slice的summarise_all

来自分类Dev

Vanilla JS 相当于 jQuery 的 slice 方法

来自分类Dev

相当于DCMPLX?

来自分类Dev

相当于$ .on的Javascript

来自分类Dev

相当于 $@ 的 Windows

来自分类Dev

是否有相当于Haskell的Scala的CHP?

来自分类Dev

在Scala中,是否有相当于Haskell的Map的“ fromListWith”?

来自分类Dev

Java流中Haskell的scanl相当于什么?

来自分类Dev

Haskell中的OCaml模块相当于什么?

来自分类Dev

Haskell相当于非类型的C ++模板

来自分类Dev

Haskell相当于Rust的Read特质是什么?

来自分类Dev

Haskell相当于OOP中的类专业化

来自分类Dev

相当于Ruby的each_with_index的Python吗?