使用ansi-wl-pprint和haskeline

时间:2017-08-27 01:09:48

标签: haskell haskeline

如何在不丢失Windows支持的情况下将ansi-wl-pprinthaskeline一起使用?

ansi-wl-pprint有两种输出SimpleDoc的方法:

(\doc -> displayS doc "") :: SimpleDoc -> String
displayIO stdout :: SimpleDoc -> IO ()

但是,文档警告displayS在Windows上不起作用(cmd.exe没有实现ANSI转义序列?)。

displayIO并未使用haskeline的打印功能,但是:

outputStr :: MonadIO m => String -> InputT m ()
outputStrLn :: MonadIO m => String -> InputT m ()
getExternalPrint :: MonadException m => InputT m (String -> IO ())

我现在能看到的最接近解决方案的是:

outputPretty :: (MonadException m, MonadIO m, Pretty p) => p -> InputT m ()
outputPretty p = getExternalPrint >>= doPrint 
  where doc = renderPretty 0.4 80 $ pretty p
        doPrint print = liftIO . print $ displayS doc ""

但是,如果displayS无法在Windows上运行,我不想使用它。

0 个答案:

没有答案