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.
WorkOS - The modern identity platform for B2B SaaS
* 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