Имеет ли термин «монадический» в J какое-либо отношение к его использованию на Haskell? - PullRequest
16 голосов
/ 10 января 2012

(Извините, я глуп и необразован, так что это, вероятно, нелепый вопрос.)

Я только начал смотреть на J, и они используют термины "монадический" и "диадический" для того, что кажется(мне) быть унарными и бинарными операторами.Почему это сделано, и как это связано с другим местом, где я слышал этот термин (Хаскелл)?Я думаю, что это не связанные омонимы, но я не уверен.

Ответы [ 4 ]

19 голосов
/ 10 января 2012

Они не связаны, за исключением того, что оба происходят от греческого корня «один». Монадические и диадические действительно являются терминами для унарных и бинарных функций. В частности, это греческие эквиваленты - они используют -adic вместо -ary . Рассмотрим слово «триада», которое также происходит от греческого языка.

Монада в том смысле, в каком ее использует Хаскелл, имеет неясную этимологию , но, вероятно, происходит от "моноида".

Я бы рекомендовал придерживаться латинских "n-ary" терминов в Haskell. Все функции в Хаскеле технически имеют один аргумент из-за карри, поэтому использование формы, полученной из греческого языка, может привести к путанице.

13 голосов
/ 10 января 2012

Они не связаны; К. А. Макканн указывает на этимологию обоих.

В любом случае использование Хаскеля, конечно, происходит из теории категорий, и считается, что это независимая выдумка, не связанная с другими чувствами монады .

Действительно, J-смысл "монадического" восходит к APL, который предшествует Хаскеллу на четверть века! Я думаю, что это может предшествовать использованию термина теории категорий.

11 голосов
/ 11 января 2012

Adicity (или adinity ) является альтернативой arity , используя корни греческих цифр вместо латиницы:

  • niladic / medadic = nullary

  • монадный = одинарный

  • двоичный = двоичный

  • триадный = троичный

  • тетрадный = четвертичный

  • ...

Различные значения монада в философии, религии, биологии, теории категорий и функциональном программировании все получены по отдельности из буквального обозначения «единицы». Термин Haskell, вероятно, образован от моноида , алгебраической структуры, эквивалентной аддитивной монаде.

6 голосов
/ 10 января 2012

Нет, использование J не имеет ничего общего с термином Haskell. Монадические и двоичные функции являются функциями одного и двух аргументов соответственно.

Термины J происходят от APL, который немного старше, чем Haskell, но я редко видел, чтобы они использовались подобным образом за пределами семейства APL.

Одним из примеров использования этих терминов в контексте, не относящемся к APL, является книга Чистый код , в которой в главе о функциях говорится о неладических, монадических и двоичных функциях.

...