2012-01-10 18 views
16

(Lo siento, soy estúpida y sin educación, así que esto es probablemente una pregunta ridícula.)¿El término "monádico" en J tiene algo que ver con su uso de Haskell?

simplemente me puse a buscar en J, y utilizan los términos "monádicos" y "diádicas" por lo que parece (a mí) ser operadores unarios y binarios. ¿Por qué se hace esto y cómo se relaciona con el otro lugar donde escuché el término (Haskell)? Supongo que son homónimos no relacionados, pero no estoy seguro.

+8

No es una pregunta estúpida; la cantidad de cosas que "monad" significa es bastante sorprendente :) – ehird

+3

I second ehird ... Los nombres que suenan únicos muchas veces no significan lo mismo. Solo mira cuántas definiciones hay de 'functor'. –

Respuesta

13

No están relacionados; C. A. McCann señala las etimologías de ambos.

En cualquier caso, el uso de Haskell, por supuesto, proviene de la teoría de categorías, y se cree que es una acuñación independiente no relacionada con el other senses of monad.

De hecho, el sentido J de "monádico" se remonta a APL, que es anterior a Haskell en un cuarto de siglo. Creo que también podría ser anterior al uso de la teoría de categorías del término.

+1

Supongo que la definición de * mónada * que citas es parte de la "tradición filosófica occidental" y se usa principalmente en leibniz http://en.wikipedia.org/wiki/Gottfried_Leibniz#The_monads – jberryman

+0

¿De qué estás hablando? Haskell es anterior a Lisp, y Lisp es anterior a APL. De hecho, Haskell se fabricó solo dos años después de que se inventaron los montadores. –

+6

@trinithis: ¿Estás confundiendo a Haskell con algún otro idioma? Lisp se especificó en 1958, APL se desarrolló entre 1957 y 1964, pero Haskell no se inició hasta 1987, y Haskell 1.0 no se definió hasta 1990. –

6

No, el uso de J no tiene nada que ver con el término de Haskell. Las funciones monádicas y diádicas son funciones de uno y dos argumentos, respectivamente.

Los términos J se originan en APL, que es un poco más antiguo que Haskell, pero rara vez los he visto usar así fuera de la familia APL.

Un ejemplo del uso de estos términos en un contexto no APL es del libro Clean Code, que en el capítulo sobre funciones habla de funciones niladic, monádica y diádica.

+2

Se puede encontrar otro ejemplo de monadic y diádica fuera de la literatura específica de APL en _Los siguientes 700 lenguajes de programación_ de Peter Landin (1966). Ver la Sección 8. y la discusión adjunta. – kaleidic

19

No están relacionados, excepto por ambos derivados de la raíz griega de "uno". Monádica y diádica son sin duda términos para funciones unarias y binarias. Específicamente, son los equivalentes derivados de griego, que usan -adic en lugar de -ary. Considere la palabra "tríada", que también deriva de griego.

Monad en el sentido que Haskell lo usa tiene an unclear etymology pero probablemente se deriva de "monoid".

Sin embargo, recomendaría seguir con los términos "n-arios" derivados de latín en Haskell. Todas las funciones en Haskell tienen técnicamente un argumento debido al currying, así que usar la forma derivada de Griego podría producir cantidades arbitrarias de confusión.

+3

Heh, me encanta la frase "cantidades arbitrarias de confusión". –

11

Adicity (o adinity) es una alternativa a arity, usando raíces numeración griega en lugar del latín:

  • niládica/medadic = nularia

  • monádico = unario

  • dyadic = binario

  • triádica = ternaria

  • tetrádica = cuaternario

  • ...

Los diversos significados de mónada en la filosofía, la religión, la biología, la teoría de la categoría, y la programación funcional son todo derivado por separado, de su denotación literal de una "unidad". El término Haskell probablemente se deriva de monoid, una estructura algebraica equivalente a una mónada aditiva.

Cuestiones relacionadas