Подтвердить что ты не робот

Какие символы допускаются в именах функций 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)

4b9b3361

Ответ 1

От отчет Haskell:

Haskell использует набор символов Unicode. Однако исходные программы в настоящее время смещены в сторону набора символов ASCII, используемого в более ранних версиях Haskell.

Недавние версии GHC кажутся прекрасными с unicode (по крайней мере, в форме UTF-8):

Prelude> let пять=5; два=2; умножить=(*); на=id in пять `умножить` на два
10

(В случае, если вы задаетесь вопросом, "пять` умножить на два" означает "пять" умножить "на два" на русском языке.)

Ваши примеры не работают, потому что эти символы являются "символами" и могут использоваться в операциях infix, но не в именах функций. См. Раздел "uniSymbol" в отчете.

Prelude> let x € y = x * y in 2 € 5
10