Использует ли термин "монадический" в 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, используя греческие нумерованные корни вместо латинского:
Различные значения монады в философии, религии, биологии, теории категорий и функциональном программировании производятся отдельно от его буквального обозначения "единицы". Термин Хаскелл, вероятно, получен из monoid, алгебраической структуры, эквивалентной аддитивной монаде.
Ответ 4
Нет, использование J не имеет ничего общего с термином Haskell. Монадические и диадические функции являются функциями одного и двух аргументов соответственно.
J-члены берутся из APL, который немного старше Haskell, но я редко видел, как они использовались как вне семейства APL.
Одним из примеров использования этих терминов в контексте, отличном от APL, является книга Clean Code, которая в главе о переговорах функций о ниладических, монадических и диадических функциях.