我想编写该代码:
IO.foreverM:
IO.sleep(1.seconds) *> IO.println("Tick")
但它无法编译。然而这段代码可以编译:
FlatMap[IO].foreverM:
IO.sleep(1.seconds) *> IO.println("Tick")
第一个代码可以以某种方式编译吗?
IO
对象不包含它支持的每个类型类操作的别名。没有提供 IO.foreverM
的导入,尽管您当然可以编写一个,并且出于这个原因,有人建议将所有此类方法添加到 IO
对象。
一般来说,您看到的使用 cats 的大多数代码更喜欢在实例上使用类型类方法,而不是通过伴生对象。就像路易斯在评论中建议的那样,
(IO.sleep(1.seconds) *> IO.println("Tick")).foreverM