debug-trace-var

You do not have to write variable names twice in Debug.Trace https://github.com/ncaq/debug-trace-var#readme

Version on this page:0.2.0
LTS Haskell 12.24:0.2.0
Stackage Nightly 2018-12-17:0.2.0
Latest on Hackage:0.2.0

See all snapshots debug-trace-var appears in

MIT licensed by ncaq
Maintained by ncaq@ncaq.net

Module documentation for 0.2.0

There are no documented modules for this package.

Hackage Stackage LTS

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

Changes

Changelog for debug-trace-var

Unreleased changes

0.2.0

0.1.0

  • added: first release
Depends on 3 packages:
Used by 1 package:
comments powered byDisqus