我尝试调试一些箭头,这真的很难。我最终在这里和那里坚持trace
,但它确实想要一个Show
实例作为它的参数,这限制了它的使用。如果它是 Show 的实例,有没有办法show
某些东西,如果不是,则使用某种默认输出值?我保证只将其用于调试;-(
人们如何调试箭头...
最好的办法是将跟踪组合到箭头中:
strace x = trace (show x) x
something :: (Num c, Show c, Arrow cat) => cat c c
something = arr (+1) <<< arr strace
-- > something 1
-- 1
-- 2