tools: handy monadic trace
This commit is contained in:
		
							parent
							
								
									334974dedd
								
							
						
					
					
						commit
						70bd8bb569
					
				| @ -269,10 +269,14 @@ showforest = concatMap showtree | |||||||
| strace :: Show a => a -> a | strace :: Show a => a -> a | ||||||
| strace a = trace (show a) a | strace a = trace (show a) a | ||||||
| 
 | 
 | ||||||
| -- | labelled trace - like strace, with a newline and a label prepended | -- | labelled trace - like strace, with a label prepended | ||||||
| ltrace :: Show a => String -> a -> a | ltrace :: Show a => String -> a -> a | ||||||
| ltrace l a = trace (l ++ ": " ++ show a) a | ltrace l a = trace (l ++ ": " ++ show a) a | ||||||
| 
 | 
 | ||||||
|  | -- | monadic trace - like strace, but works as a standalone line in a monad | ||||||
|  | mtrace :: (Monad m, Show a) => a -> m a | ||||||
|  | mtrace a = strace a `seq` return a | ||||||
|  | 
 | ||||||
| -- | trace an expression using a custom show function | -- | trace an expression using a custom show function | ||||||
| tracewith f e = trace (f e) e | tracewith f e = trace (f e) e | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user