【发布时间】:2015-11-05 01:41:28
【问题描述】:
我最近在 Twitter 上遇到了一个名为 EmojiHaskell 的机器人,它声称会在推特上发布“带有表情符号变量名的可解释 Haskell 代码”。一个特别的Tweet 引起了我的注意,因为它对我来说看起来像是格式错误的语法,所以我决定仔细看看。到目前为止,我已经生成了以下代码:
module Main where
???? :: [????] -> Maybe ????
???? [] = Nothing
???? (????:as) = Just ????
main = print $ ???? "♥"
由于我有时在我的 Haskell 代码中使用了 λ,我希望这段代码可以工作,但 GHC 似乎根本不喜欢这个表情符号。
$ runhaskell Main.hs 我得到:
Main.hs:4:1: 输入‘????’时解析错误
我已经看过UnicodeSyntax 扩展, 并尝试只使用一些或单个表情符号而不是全部使用,以查看是否是某个人引起了问题。
现在我的问题是: 目前是否有可以接受代码的 Haskell 编译器? 我可以让 GHC 以某种方式使用此代码吗?
【问题讨论】:
-
我不知道你是否在乎,但你可以做一个预处理器。 Afaik GHC 有一个标志来运行您选择的自定义预处理器。
-
AFAIK,Unicode 语法允许您将
->替换为→,等等。 不只需要在源代码中使用 Unicode 字符。 downloads.haskell.org/~ghc/latest/docs/html/users_guide/…