How can I print an arbitrary Haskell expression?

Thank you so much !!

If I leave out,

{-# OPTIONS_GHC -pgmP cpp #-}

I get

     error: too many arguments provided to function-like macro invocation
  |
5 | main = PRINT_EXP(null [1,2,3])
  |                          ^
main = PRINT_EXP(null [1,2,3])

Full code:

{-# LANGUAGE CPP #-}

#define PRINT_EXP(x) (putStr #x >> putStr " = " >> print (x))

main = PRINT_EXP(null [1,2,3])