Skip to content

Instantly share code, notes, and snippets.

@andrevdm
Last active February 6, 2018 19:40
Show Gist options
  • Save andrevdm/737e514eada126bb593c876f1fa19d0e to your computer and use it in GitHub Desktop.
Save andrevdm/737e514eada126bb593c876f1fa19d0e to your computer and use it in GitHub Desktop.
GHCi pretty print surviving reload (using :rr) for GHC +8.0
:set -package pretty-show
:set -package hscolour
:set -XOverloadedStrings
:set -XNoImplicitPrelude
:set -XScopedTypeVariables
:set -XTupleSections
:set -fno-warn-type-defaults
:set prompt "λ: "
import Protolude
-- before using it:
-- $ stack install pretty-show
-- $ stack install hscolour
:def pretty \_ -> return ("import Protolude\nimport Text.Show.Pretty (ppShow)\nimport qualified System.IO as XXIO\nimport qualified Language.Haskell.HsColour as XXH\nimport qualified Language.Haskell.HsColour.Colourise as XXH\nmyColourPrefs = XXH.defaultColourPrefs { XXH.conop = [XXH.Foreground XXH.Yellow] , XXH.conid = [XXH.Foreground XXH.Yellow, XXH.Bold] , XXH.string = [XXH.Foreground $ XXH.Rgb 29 193 57] , XXH.char = [XXH.Foreground XXH.Cyan] , XXH.number = [XXH.Foreground $ XXH.Rgb 202 170 236] , XXH.keyglyph = [XXH.Foreground XXH.Yellow]}\ncolorPrint = XXIO.putStrLn . XXH.hscolour XXH.TTY myColourPrefs False False [] False . ppShow\n:set -interactive-print colorPrint")
:def no-pretty \_ -> return (":set -interactive-print System.IO.print")
:def rr \_ -> pure ":r\n:pretty"
putText ":rr to reload"
:rr
:def package \ m -> return $ ":! ghc-pkg --simple-output find-module " <> m
:def hlint const . return $ ":! hlint \"src\""
:def hoogle \s -> return $ ":! hoogle --count=30 \"" <> s <> "\""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment