haskell - Haskell 函数名称中允许使用哪些字符?

标签 haskell

什么是函数的有效名称?

例子

-- works
let µ x = x * x  
let ö x = x * x

-- doesn't work  
let € x = x * x  
let § x = x * x

我不确定,但我的直觉是 Haskell 不允许使用 Unicode 函数名,是吗?
(Unicode 像 http://www.cse.chalmers.se/~nad/listings/lib-0.4/Data.List.html )

最佳答案

来自 the Haskell report :

Haskell uses the Unicode character set. However, source programs are currently biased toward the ASCII character set used in earlier versions of Haskell .



最近版本的 GHC 似乎可以使用 unicode(至少以 UTF-8 的形式):
Prelude> let пять=5; два=2; умножить=(*); на=id in пять `умножить` на два
10

(如果你想知道,«пять `умножить` на два»在俄语中的意思是“五乘以二”。)

您的示例不起作用,因为这些字符是«符号»并且可以在中缀运算符中使用,但不能在函数名称中使用。请参阅报告中的“uniSymbol”类别。
Prelude> let x € y = x * y in 2 € 5
10

关于haskell - Haskell 函数名称中允许使用哪些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5023485/

相关文章:

haskell - Haskell 中的守卫和纯粹

haskell - 在 Haskell 中是否有可能有健忘类型的同义词?

haskell - 图形简化/棘手的空间泄漏示例

haskell - 有没有一种高效、懒惰的方式将 foldMap 与 traverse 融合?

haskell - 在像 exceptT a IO 这样的 monad 堆栈中管理资源的最佳方法是什么?

rest - 如何访问 Servant 中的 http header ?

haskell - 如何为具有幻像类型变量的新类型定义 MonadUnliftIO 实例?

haskell - 非确定性如何用 List monad 建模?

haskell,如何处理不匹配的类型 - monad

Haskell - 创建约束并应用于数据类型