纯函数中的跟踪输出

Car*_*s00 4 haskell ghc

是否有可能在纯函数中打印跟踪日志,如:

pure :: Int -> Int
pure x = do
  <trace log>
  return x*x
Run Code Online (Sandbox Code Playgroud)

我知道,这不是"Haskell干净",但GHC中没有任何有用的黑客攻击吗?

ham*_*mar 13

对于调试,您可以使用该Debug.Trace模块.

import Debug.Trace

pure :: Int -> Int
pure x = trace "log" (x * x)
Run Code Online (Sandbox Code Playgroud)

请注意,由于懒惰,输出在某些情况下会与您正在生成的其他输出混合,因此不建议用于登录生产代码,但对于简单的调试任务,它通常很好.