packages feed

dunai-test-0.11.0: src/FRP/Dunai/Debug.hs

-- |
-- Copyright  : (c) Ivan Perez, 2017
-- License    : BSD3
-- Maintainer : ivan.perez@keera.co.uk
--
-- Debug FRP networks by inspecting their behaviour inside.
module FRP.Dunai.Debug where

-- External imports
import Data.MonadicStreamFunction hiding (trace)
import Debug.Trace                (trace)

-- ** Debugging

-- | Monadic Stream Function that prints the value passing through using
-- 'trace'.
traceMSF :: Monad m
         => Show a
         => MSF m a a
traceMSF = traceMSFWith show

-- | Monadic Stream Function that prints the value passing through using
-- 'trace', and a customizable 'show' function.
traceMSFWith :: Monad m
             => (a -> String)
             -> MSF m a a
traceMSFWith f = arr (\x -> trace (f x) x)

-- | Execute an IO action at every step, and ignore the result.
traceMSFWithIO :: (a -> IO b)
               -> MSF IO a a
traceMSFWithIO f = arrM (\x -> f x >> return x)