如果我对像
这样的列表有一个scala for-understandingdef getList: List[A]
def doSomeStuff(a: A): List[B]
for {
a <- getList
x <- doSomeStuff(a)
} yield x
我使用Intellij中的调试器逐步完成它,调试器非常聪明,不会进入List类的内部map / flatMap实现。我可以检查getList
和doSomeStuff
来电,而不用考虑在后台工作的monad管道。
然而,当我实现自己的monad时,调试器的行为方式并不相同,它会直接进入并显示monad实现的所有内容。虽然这对于初始调试monad很有用,但是使调试使用monad的代码变得更加困难。有没有办法让调试器像处理标准库一样处理自定义monad,这样在调试代码时没有人会疯狂?