您还可以使用为处理此确切用例而编写的转储包:
{-# language QuasiQuotes #-}
import Debug.Dump
main = putStrLn [d| foo (bar 1) (bar 2) |]
foo = (+)
bar = (+1)
哪个打印:(foo (bar 1) (bar 2)) = 5
它还处理多个用逗号分隔的表达式:
putStrLn [d| foo (bar 1) (bar 2), map bar [1, 2] |]
哪个打印:(foo (bar 1) (bar 2)) = 5 (map bar [1, 2]) = [2,3]
奖励:如果您安装了 nix-shell(nix 包管理器的一部分),您甚至可以使用这个“单线”快速尝试:
$ nix-shell -p "nix-shell -p "haskellPackages.ghcWithPackages (p: [p.dump])" --run "echo '{-# language QuasiQuotes #-}; import Debug.Dump; foo = (+); bar = (+1); main = putStrLn [d| foo (bar 1) (bar 2), map bar [1, 2] |]' | runhaskell"