Что это за тип математики: a -> b -> c

Я часто вижу объявления типов, похожие на это, глядя на Haskell:

a -> (b -> c)

Я понимаю, что он описывает функцию, которая принимает в чем-то типа a и возвращает новую функцию, которая принимает что-то типа b и возвращает что-то типа c. Я также понимаю, что типы ассоциативны (отредактируйте: я ошибался в этом - см. Комментарии ниже), поэтому приведенное выше можно переписать так, чтобы получить тот же результат:

(a -> b) -> c

Это могло бы описать функцию, которая принимает что-то типа a и что-то типа b и возвращает что-то типа c.

Я также слышал, что вы можете сделать дополнение (править: действительно, слово, которым я был поиск здесь является двойным - см. комментарии ниже) к функции, переключая стрелки:

a <- b <- c

что я думаю эквивалентно

c -> b -> a

, но я не уверен.

Мой вопрос, как называется такая математика? Я хотел бы узнать об этом больше, чтобы использовать его для написания лучших программ. Мне интересно узнать, что такое дополнительная функция и какие еще преобразования можно выполнять с объявлениями типов.

Спасибо!

7
задан bmaddy 27 March 2011 в 17:47
поделиться