我正在使用GHood来观察分区函数的这个实现的执行,并期望看到一个二叉树。相反,我得到这棵树:
import Debug.Observe
p :: (Observable a, Ord a, Num a) => a -> a -> a
p k n
| k > n = 0
| k == n = 1
| otherwise = (observe "left" p (k+1) n ) + (observe "right" p k (n-k))
>>> printO $ observe "p" p 1 3
根据有关irc的建议,我也尝试使用Data.Number.Natural
中的惰性自然数字失败。
当使用Vacuum.Cairo
时,我的回复更少,只是函数的结果运行完成。
>>> m: + System.Vacuum.Cairo
>>> view $ p 1 5