Haskell GHCI Pretty打印机-未使用可使其引人注目的颜色进行渲染
例如,在控制台中键入-1将呈现为1: 选择文本后,可以看到它实际上是-1: .ghci文件:Haskell GHCI Pretty打印机-未使用可使其引人注目的颜色进行渲染,haskell,ghci,Haskell,Ghci,例如,在控制台中键入-1将呈现为1: 选择文本后,可以看到它实际上是-1: .ghci文件: import qualified IPPrint import qualified Language.Haskell.HsColour as HsColour import qualified Language.Haskell.HsColour.Colourise as HsColour import qualified Language.Haskell.HsColour.Output as HsC
import qualified IPPrint
import qualified Language.Haskell.HsColour as HsColour
import qualified Language.Haskell.HsColour.Colourise as HsColour
import qualified Language.Haskell.HsColour.Output as HsColour
let myColourPrefs = HsColour.defaultColourPrefs { HsColour.conid = [HsColour.Foreground HsColour.Yellow, HsColour.Bold], HsColour.conop = [HsColour.Foreground HsColour.Yellow], HsColour.string = [HsColour.Foreground HsColour.Green], HsColour.char = [HsColour.Foreground HsColour.Cyan], HsColour.number = [HsColour.Foreground HsColour.Red, HsColour.Bold], HsColour.layout = [HsColour.Foreground HsColour.White], HsColour.keyglyph = [HsColour.Foreground HsColour.White] }
let myPrint :: (Show a) => a -> IO (); myPrint = putStrLn . HsColour.hscolour (HsColour.TTYg HsColour.XTerm256Compatible) myColourPrefs False False "" False . IPPrint.pshow
:set -interactive-print=myPrint
:set prompt "\ESC[33m\STXλ> \ESC[m\STX"
:set prompt-cont " | "
:set +m
更新
以下结果稍微好一些,但仍然可以改进:
import Text.Show.Pretty (ppShow)
import Language.Haskell.HsColour
import Language.Haskell.HsColour.Colourise
let colorPrint = putStrLn . hscolour TTY defaultColourPrefs False False "" False . ppShow
:set -interactive-print=colorPrint
更新
问题在于,以负数为前缀的破折号被错误分类为注释。因为没有一种简单的方法可以提交实际问题的修补程序,所以我将注释颜色设置为与数字相同,以便可读:
HsColour.comment = [HsColour.Foreground HsColour.Red, HsColour.Bold]
格奇先生
.ghci.hs
import qualified IPPrint
import qualified Language.Haskell.HsColour as HsColour
import qualified Language.Haskell.HsColour.Colourise as HsColour
import qualified Language.Haskell.HsColour.Output as HsColour
myColourPrefs = HsColour.defaultColourPrefs
{ HsColour.conid = [HsColour.Foreground HsColour.Yellow, HsColour.Bold]
, HsColour.conop = [HsColour.Foreground HsColour.Yellow]
, HsColour.string = [HsColour.Foreground HsColour.Green]
, HsColour.char = [HsColour.Foreground HsColour.Cyan]
, HsColour.number = [HsColour.Foreground HsColour.Red, HsColour.Bold]
, HsColour.layout = [HsColour.Foreground HsColour.White]
, HsColour.keyglyph = [HsColour.Foreground HsColour.White]
, HsColour.comment = [HsColour.Foreground HsColour.Red, HsColour.Bold] }
myPrint :: (Show a) => a -> IO ()
myPrint = putStrLn . HsColour.hscolour (HsColour.TTYg HsColour.XTerm256Compatible) myColourPrefs False False "" False . IPPrint.pshow
import qualified IPPrint
import qualified Language.Haskell.HsColour as HsColour
import qualified Language.Haskell.HsColour.Colourise as HsColour
import qualified Language.Haskell.HsColour.Output as HsColour
myColourPrefs = HsColour.defaultColourPrefs
{ HsColour.conid = [HsColour.Foreground HsColour.Yellow, HsColour.Bold]
, HsColour.conop = [HsColour.Foreground HsColour.Yellow]
, HsColour.string = [HsColour.Foreground HsColour.Green]
, HsColour.char = [HsColour.Foreground HsColour.Cyan]
, HsColour.number = [HsColour.Foreground HsColour.Red, HsColour.Bold]
, HsColour.layout = [HsColour.Foreground HsColour.White]
, HsColour.keyglyph = [HsColour.Foreground HsColour.White]
, HsColour.comment = [HsColour.Foreground HsColour.Red, HsColour.Bold] }
myPrint :: (Show a) => a -> IO ()
myPrint = putStrLn . HsColour.hscolour (HsColour.TTYg HsColour.XTerm256Compatible) myColourPrefs False False "" False . IPPrint.pshow