如何正确编写可能失败的foldLeft函数?

时间:2018-06-12 16:58:22

标签: scala functional-programming scalaz scala-cats

考虑以下代码段

IO

现在,这可以达到预期的效果,但并不理想,因为这是一种不安全的操作。

我想重构代码,以便第二行(而不是返回字符串)返回将创建字符串的ul.tree li span { position: absolute; left: -6px; top: 5px; display: inline-block; width:10px; height: 10px; background-color: red; border-radius: 5px; }

1 个答案:

答案 0 :(得分:2)

那么理解的错误是什么?

(1 to 2).foldLeft(IO("Read this: "))((c, i) =>
  for {
    cc <- c
    smt <- sayManyTimes("mayo")
  } yield cc + smt)

您还可以手动展开for-comprehension:

(1 to 2).foldLeft(IO("Read this: ")){ (c, _) =>
  c.flatMap(cc => 
    sayManyTimes("mayo").map(cc + _)
  )
}