Scalaz 将计算拆分为子部分
我有一个非常大的 List[A]
和一个函数 f: List[A] =>;列表[B]
。我想将原始列表拆分为具有最大大小的子列表,依次将函数应用于每个子列表,然后取消将结果拆分为一个大列表[B]
。这很简单:
def split[T](l : List[T], max : Int) : List[List[T]] = //TODO
def unsplit[T](l : List[List[T]]) : List[T] = //TODO
def apply[A, B](l : List[A], f : List[A] => List[B], max : Int) : List[B] = {
unsplit(split(l, max).map(f(_)))
}
我想知道 scalaz 是否提供了开箱即用的标准内容?特别是 apply
方法?
I have a very large List[A]
and a function f: List[A] => List[B]
. I would like to split my original list into sub-lists with a maximum size, apply the function to each sublist in turn and then unsplit the result into one big List[B]
. This pretty easy:
def split[T](l : List[T], max : Int) : List[List[T]] = //TODO
def unsplit[T](l : List[List[T]]) : List[T] = //TODO
def apply[A, B](l : List[A], f : List[A] => List[B], max : Int) : List[B] = {
unsplit(split(l, max).map(f(_)))
}
I was wondering whether scalaz supplied standard stuff to do this out of the box? In particular the apply
method?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
unsplit
它只是MA#join
,对于任何M[M[A]]
,其中M
是>单子
。split
并不现成存在。以下是一种绕行的方法,更多地演示了一些 Scalaz 概念。它实际上在编译器中触发了堆栈溢出!unsplit
it justMA#join
, for anyM[M[A]]
whereM
is aMonad
.split
doesn't exist out of the box. The following is a round about way of doing this, more to demonstrate some Scalaz concepts. It actually triggers a stack overflow in the compiler at the moment!这个怎么样:
How about this: