例如:
{-# 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
谢谢。
新发现:
当in出现在源文件中时可以使用,但是不能在REPL中输入((我使用WinGHCi)。
答案 0 :(得分:4)
问题不在于您的代码或构造函数,而仅仅是您的环境未设置为Haskell可以打印unicode字符。试试
Prelude> putStrLn "\9731"
您应该会遇到相同的问题。
我不是Unicode和Windows方面的专家,但是大概可以通过设置LANG=C.utf8
环境变量或类似变量来解决此问题。
答案 1 :(得分:0)
在@Cubic之后,可以通过在GHCi之前运行chcp 65001
来解决此问题。
我在Windows 7命令行中使用堆栈:
X:\you-path> chcp 65001
X:\you-path> stack ghci
*Main> Constant 2 :◁ Variable "a"
Constant 2 :◁�� Variable "a"
有效。