例如:
{-# 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 - Haskell不支持Unicode符号构造函数(例如:◁)吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55353647/