繁体   English   中英

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

[英]Haskell doesn't support unicode symbol constructor (e.g.: ◁)?

例如:

{-# 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环境变量或类似环境变量来解决此问题。

在@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"

有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM