状態モナドの変化を追跡したい。これは動作しません:
main :: IO ()
main = do
print $ snd $ execState compute initialState
traceThis :: (Show a) => a -> a
traceThis x = trace ("test: " ++ show x) x
compute :: State ([Row], Integer) String
compute = liftM traceThis $ get >>= \(rs, result) -> put (rs, result + 3) >> return "foo"
何も出力されません (正しく更新されたメイン関数での出力の最終結果を除く)。
状態を追跡するためのアイデアや代替案はありますか? これを使用して、プロジェクトのオイラー ソリューションの正確性を確認したいと考えています。