写入标准输出时如何保留颜色

How to preserve color when writing to stdout

#!/usr/bin/env stack
{- stack --install-ghc --resolver lts-8.8 runghc
-}
import System.IO
import System.Process

main = createProcess (proc "ls" [])

虽然 stdout 被 Haskell 认为是一个 tty,因为 hIsTerminalDevice stdout returns Truels 不承认它如此,并且不输出颜色。

有没有办法绕过这个问题,或者在 Haskell 中显然不可能获得彩色输出?

编辑:明确地说,我不希望 ls 工作,而是在将 stdout 识别为 tty 时支持颜色输出的整个 Unix 工具范围。

答案是 Haskell 没有错,我混淆了我自己的 ls,别名为 ls --color=tty