Откуда взялась секция имени для частично применяемого инфиксного оператора?

В Haskell мы используем термин «раздел» для обозначения частично применяемой функции, используемой в инфиксной позиции. Например, для функции foo :: a -> b -> c и значений x :: a и y :: b у нас есть два раздела

s1 = (x `foo`) :: b -> c == \b -> foo x b

и

s2 = (`foo` y) :: a -> c == \a -> foo a y

Однако в теории категорий часть g части f определяется как правая обратная часть f (так что f . g == id).

Я не вижу очевидной связи между двумя определениями. Например, s1 явно не является инверсией foo, по крайней мере, не в Hask. Я полагаю, что s1 даже не нужно иметь инверсию в Hask.

Является ли теоретико-категориальное определение источником определения Haskell, и если да, то как?


person chepner    schedule 10.11.2016    source источник
comment
Я предполагаю, что они совершенно не связаны. Я трактую сечение так: берешь (x+y), отрубаешь от него одну часть (берешь сечение) и считаешь, что осталось.   -  person chi    schedule 10.11.2016
comment
Впрочем, это так... прозаично.   -  person chepner    schedule 11.11.2016
comment
Я не знаю, но я постараюсь узнать.   -  person augustss    schedule 11.11.2016
comment
Язык Miranda имел разделы и был разработан Дэвидом Тернером. Миранда сильно повлияла на дизайн Haskell.   -  person ja.    schedule 11.11.2016
comment
Из Руководства Миранды, глава 9: Благодарность: Идея разделов принадлежит Ричарду Берду (из Исследовательской группы по программированию Оксфордского университета) и Дэвиду Уайлу (из Института информационных наук Университета Южной Калифорнии). miranda.org.uk   -  person ja.    schedule 11.11.2016
comment
Они появились в Haskell 1.1, выпущенном в августе 1991 года, согласно «Истории Haskell: быть ленивым с классом».   -  person ja.    schedule 11.11.2016


Ответы (2)


Как было указано в комментариях, Haskell получил разделы от Миранды (и Оруэлла). Дэвид Тернер говорит, что идея пришла ему в голову от Ричарда Берда и Дэвида Уайла.

Я только что разговаривал с Ричардом Бёрдом. Он говорит, что не помнит, откуда взялось это название, но думает, что его придумал Дэвид Уайл. К сожалению, Дэвид Уайл умер в прошлом году, поэтому мы, вероятно, никогда не узнаем. Но Ричард признал, что именно он убедил Дэвида Тернера и Фила Уодлера добавить разделы на их языках.

Вот страница из диссертации Уайла, которая является первым известным упоминанием «раздела». https://imgur.com/a/cQDlu

person augustss    schedule 10.11.2016
comment
Спасибо за проверку. Я никогда особо не задумывался об этом, но так много других вещей основано на теории категорий, что казалось возможным, что и это тоже. - person chepner; 11.11.2016

Возможно, это происходит из-за операции "раздел массива", используемой в основном в Фортране, в частности, для извлечения столбцов или строк. Это имеет смысл, если вы планируете создать справочную таблицу из функции с двумя аргументами. https://www.phy.ornl.gov/csep/pl/node16.html

person Alexey Birukov    schedule 11.11.2016