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

标签 haskell unicode symbols ghci

例如:

{-# 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/

相关文章:

user-interface - 在 Haskell 中处理图形用户界面

haskell - 为什么这个类型变量是不明确的?

string - LUA 计数字符串中的重复字符

special-characters - 我在 html 纯文本中看到了音乐符号,但有人知道它是如何发生的吗?

java - 找不到符号 - 构造函数 item()

haskell - "referentially transparent"IO调用的可重入缓存

list - 交替应用输入一元函数的 Haskell 函数

javascript - 如何将 "\\u00e2"或 "\\u00ea"等字符解码为 un​​icode 字符?

sorting - 使用 LDML 文件中指定的整理顺序进行行排序

python - os.walk 返回不同编码的非 ascii (unicode) 文件名,如何处理?