Haskell 不支持 unicode 符号构造函数(例如:?)?

cha*_*sey 2 unicode haskell symbols ghci

例如:

{-# LANGUAGE UnicodeSyntax #-}

data Symbolic n
  = Constant n
  | Variable String
  | Symbolic n :+ Symbolic n
  | Symbolic n :* Symbolic n
  | Symbolic n :? Symbolic n
  deriving (Show)
Run Code Online (Sandbox Code Playgroud)

此代码在 GHCi 中成功加载。

然后我输入:

Constant 2 :* Variable "a"
Run Code Online (Sandbox Code Playgroud)

没关系。

但是当我输入时:

Constant 2 :? Variable "a"
Run Code Online (Sandbox Code Playgroud)

*** 异常::hPutChar:无效参数(无效字符)

这是否意味着 Haskell 不支持 Unicode 符号构造函数?

如何使它支持Unicode符号构造函数?

环境:GHCi 8.6.3 (WinGHCi) Windows 7

谢谢。

新观察:

它什么时候工作?出现在源文件中,但无法输入?在 REPL 中(我使用 WinGHCi)。

Joa*_*ner 5

问题不在于您的代码或构造函数,而在于您的环境没有设置为 Haskell 可以打印 unicode 字符。尝试

Prelude> putStrLn "\9731"
Run Code Online (Sandbox Code Playgroud)

你应该看到同样的问题。

我不是 Unicode 和 Windows 方面的专家,但想必您可以通过设置LANG=C.utf8环境变量或类似方法来解决此问题。