函数的有效名称是什么?
实施例
-- works
let µ x = x * x
let ö x = x * x
-- doesn't work
let € x = x * x
let § x = x * x
我不确定,但我的预感是Haskell不允许使用Unicode函数名称,是吗? (像http://www.cse.chalmers.se/~nad/listings/lib-0.4/Data.List.html中的Unicode)
答案 0 :(得分:29)
Haskell使用Unicode字符集。但是,源程序目前偏向于早期版本的Haskell中使用的ASCII字符集。
最近版本的GHC似乎没有unicode(至少以UTF-8的形式):
Prelude> let пять=5; два=2; умножить=(*); на=id in пять `умножить` на два
10
(如果你想知道,«пять`умножить`надва»意味着“五”乘以两个»俄语。)
您的示例不起作用,因为这些字符是“符号”,可以在中缀运算符中使用,但不能在函数名称中使用。请参阅报告中的“uniSymbol”类别。
Prelude> let x € y = x * y in 2 € 5
10