首页 > 解决方案 > Haskell 不支持 unicode 符号构造函数(例如:◁)?

问题描述

例如:

{-# 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)。

标签: haskellunicodesymbolsghci

解决方案


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

Prelude> putStrLn "\9731"

你应该看到同样的问题。

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


推荐阅读