debug-trace-var alternatives and similar packages
Based on the "Debug" category.
Alternatively, view debug-trace-var alternatives based on common mentions on social networks and blogs.
-
hood
Hood debugger, based on the idea of observing functions and structures as they are evaluated. -
linux-perf
Haskell library for reading perf.data files from the linux performance events tool. -
print-debugger
Prints lines with IDE friendly stack traces in Haskell. -
htrace
Hierarchical tracing for debugging lazy evaluation in Haskell -
heapsize
ghc-datasize is a tool to determine the size of Haskell data structures in GHC's memory -
show-please
Improved Show instances for exception and other types -
todo
Wrapping development symbols in Warnings to make sure you don't miss them
Access the most powerful time series database as a service
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of debug-trace-var or a related project?
README
debug-trace-var
When writing print debug, we often write.
import Debug.Trace
main :: IO ()
main = do
let a = 1
traceIO $ "a = " ++ show a
This is troublesome to describe the name of the variable twice.
With debug-trace-var you write variables only once.
{-# LANGUAGE QuasiQuotes #-}
import Debug.Trace.Var
main :: IO ()
main = do
let a = 1
[traceVarIO|a|]
or
{-# LANGUAGE TemplateHaskell #-}
import Debug.Trace.Var
main :: IO ()
main = let a = 1 :: Int
in $(traceMTH 'a)
You may avoid name quotes that are confusing with character literals, Or often it may be to avoid the QuasiQuotes to destroy the syntax highlight of the text editor.
Example
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
import Debug.Trace.Var
-- > a
-- n = 1
-- s = "あ"
a :: IO ()
a = let n = 1
s = "あ"
in [traceVar|n|] ([traceVar|s|] return ())
-- > b
-- "n = 1
-- n = 1"
b :: String
b = let n = 1
in [traceVarId|n|]
-- > c
-- n = 344
c :: IO ()
c = let n = 344
in [traceStackVar|n|] (return ())
-- > d
-- n = 344
-- n = 344
d :: IO ()
d = do
let n = 344
[traceVarIO|n|]
[traceVarIO|n|]
-- > e
-- n = 344
e :: IO ()
e = do
let n = 344
[traceVarM|n|]
-- > f
-- n = 344
f :: IO ()
f = let n = 344
in $(traceMTH 'n)
Motivation
I wanted to use Template Haskell.
One point advice
You can use ndmitchell/debug: Haskell library for debugging