【发布时间】:2021-12-09 22:07:44
【问题描述】:
我是 Haskell 的新手,尝试的东西很少。我有一个小程序。
module Collatz where
compute_collatz :: Integer -> Integer
compute_collatz x = if even x then evenComputation else oddcomputation
where evenComputation = div x 2
oddcomputation = 3 * x + 1
compute_steps :: Integer -> Integer
compute_steps 1 = 0
compute_steps num = 1 + compute_steps(compute_collatz(num))
我想打印每个compute_collatz(num) 调用生成的数字序列。如何在 compute_steps 或 compute_collatz 函数中添加 print 或 show 语句
【问题讨论】:
-
你可以使用
trace :: String -> a -> a,所以像compute_collatz x = trace (show x) (if ...) -
所以不是应该像 compute_steps num = trace (show num)(1 + compute_steps(compute_collatz(num))) 因为我想打印所有计算出来的数字+