例如:
{-# LANGUAGE UnicodeSyntax #-}
data Symbolic n
= Constant n
| Variable String
| Symbolic n :+ Symbolic n
| Symbolic n :* Symbolic n
| Symbolic n :◁ Symbolic n
deriving (Show)
此代码在 GHCi 中成功加载。
然后我输入:
Constant 2 :* Variable "a"
没关系。
但是当我输入时:
Constant 2 :◁ Variable "a"
*** 异常::hPutChar:无效参数(无效字符)
这是否意味着 Haskell 不支持 Unicode 符号构造函数?
如何让它支持Unicode符号构造函数?
环境: GHCi 8.6.3(WinGHCi) Windows 7
谢谢。
新观察:
当 ◁ 出现在源文件中时它可以工作,但你不能在 REPL 中输入 ◁ (我使用 WinGHCi)。
最佳答案
问题不在于您的代码或构造函数,而在于您的环境没有设置好让 Haskell 可以打印 unicode 字符。尝试
Prelude> putStrLn "\9731"
你应该会看到同样的问题。
我不是 Unicode 和 Windows 方面的专家,但大概您可以通过设置 LANG=C.utf8
环境变量或类似变量来解决此问题。
关于Haskell 不支持 unicode 符号构造函数(例如 : ◁)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55353647/