Использует ли термин "монадический" в J какое-либо отношение к его использованию Haskell?

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

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

Ответы

Ответ 1

Они не связаны; C. A. McCann указывает этимологии обоих.

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

В самом деле, чувство "монадического" чувства J относится к APL, которое предшествовало Haskell на четверть века! Я думаю, что это может предшествовать и использованию теории терминов.

Ответ 2

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

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

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

Ответ 3

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

  • niladic/medadic = nullary

  • monadic = унарный

  • dyadic = двоичный

  • triadic = trernary

  • tetradic = quaternary

  • ...

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

Ответ 4

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

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

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