2012-05-01 5 views
2

Пусть говорят, я должен определить следующую функцию:Зачем нам нужно использовать скобки при составлении функций в haskell?

Идентичность = chr.ord

Но выше линии не будет работать, правильный путь будет выглядеть так:

идентичности = (CHR. ord)

Haskell обычно довольно минималистский язык, поэтому использование дополнительных скобок не кажется естественным (для меня).

Кто-нибудь знает о необходимости введения кронштейнов. Я не могу вспомнить, где еще мы используем точечный оператор в haskell (другой тогда для десятичных знаков).

Редактирование после комментариев Nate/Daniel

И вы правы. Мой фактический метод был:

nextLetter a 
     | a /= 'z' = chr.ord a 
     | a == 'z' = 'a' 

Теперь я понимаю, в этом случае он будет оценивать ог а и затем попытаться оценить chr.97, следовательно, ошибка!

Спасибо.

+1

Нет ничего плохого в том, чтобы опустить круглые скобки. Можете ли вы изменить свой вопрос и добавить ошибку, которую вы получаете? – Nate

+2

Я думаю, что он имел в виду 'identity x = chr.ord x' – m09

+0

Это было быстро, отметив ответ Дэниела, поскольку это помогло раскрыть ошибку. –

ответ

4

Вы ошибаетесь. Когда я пишу

import Data.Char 
identity = chr.ord 

в test.hs и загрузить его в ghci, ничего не пойдет не так.

Смежные вопросы