首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emoji在Haskell的应用

Emoji在Haskell的应用
EN

Stack Overflow用户
提问于 2015-08-12 12:32:24
回答 1查看 3K关注 0票数 30

最近,我在推特上遇到了一个名为EmojiHaskell的机器人,它声称在推特上发布“可解释的带有表情符号变量名的Haskell代码”。一个特定的推特引起了我的注意,因为在我看来它是格式错误的语法,所以我决定仔细看一看。到目前为止,我已经生成了以下代码:

代码语言:javascript
复制
module Main where

 :: [] -> Maybe 
 [] = Nothing
 (:as) = Just 

main = print $  "♥"

由于我有时在Haskell代码中使用了λ,所以我希望这段代码能够工作,但看起来GHC根本不喜欢这个表情符号。

关于$ runhaskell Main.hs,我得到:

Main.hs:4:1:解析输入‘’上的错误

我已经看过UnicodeSyntax扩展,并且尝试只使用一些或单一的表情符号,而不是所有的表情符号,以确定某个表情符号是否引发了问题。

现在我的问题是:当前是否有接受代码的Haskell编译器?我能让GHC以某种方式使用这个代码吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-12 13:11:15

该代码无效,haskell。原因是(很可能,所有的表情符号)都是符号字符:

代码语言:javascript
复制
Prelude> import Data.Char
Prelude Data.Char> generalCategory ''
OtherSymbol

但是,您仍然可以像其他任何符号一样使用它们,即作为运算符:

代码语言:javascript
复制
Prelude Data.Char> let () = (+)
Prelude Data.Char> 32  42
74

此外,正如user3237465所指出的,如果您对运算符使用前缀语法,即将其放在括号中,您甚至可以像使用任何其他符号一样使用它:

代码语言:javascript
复制
() :: [a] -> Maybe a
() [] = Nothing
() (():as) = Just ()

main = print $ () "♥"

这几乎就是最初文章中的例子。不幸的是,这个技巧不适用于类型变量。不幸的是,文献资料的措辞有点遗憾,但是事实上符号从来不是类型变量,而且总是类型构造函数。

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31965349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档