¿Cuál es el significado de los monoides?
Primero, comprendamos qué son …
Los monoides son la forma más básica de combinar cualquier valor . Un monoide es el álgebra que se cierra bajo una operación binaria asociativa y tiene un elemento de identidad.
- ¿Qué relaciones, si las hay, existen entre álgebra abstracta y sistemas dinámicos?
- ¿Cuál fue el 'resultado' matemático más inexacto (quizás ridículamente) que se 'probó'?
- ¿Qué debo hacer si tengo 20 años y no soy bueno en matemáticas, pero me encantan las computadoras? ¿Debería tratar de ser mejor en matemáticas para estudiar CS, o debería rendirme?
- Cómo resolver la ecuación de calor, [matemática] \ frac {\ partial u} {\ partial t} = \ frac {\ partial ^ 2 u} {\ partial x ^ 2} [/ matemática] en el intervalo [matemática] ( -1,1) [/ math] con condiciones iniciales y de contorno [math] u (x, 0) = 1, u (-1, t) = u (1, t) = 0
- ¿Cuál es una forma matemáticamente plausible de ganar boletos de lotería?
Podemos pensar en un monoide como un patrón de diseño que nos permite reducir (o doblar) rápidamente en una colección de un solo tipo de forma paralela.
Un monoide es cualquier cosa que satisfaga las siguientes reglas:
- Regla de cierre
- Regla de asociatividad
- Regla de identidad
Regla de asociatividad
“Si combina varios valores más, el orden en el que combina no importa” (1 + 2) + 3 == 1 + (2 + 3) // asociatividad izquierda y derecha
Entonces, si tenemos 1 + 2 + 3 + 4, podemos transformar eso en (1 + 2) + (3 + 4).
“Hay un elemento de identidad que no hace nada”. Regla de identidad
Ahora, ¿cuál es el significado de los monoides?
Dadas las tres reglas anteriores, los monoides nos permiten escribir una función de reducción. Cuando ejecutamos una reducción en una matriz de enteros usando la suma, iniciamos nuestra operación con un 0 (el elemento de identidad).
Cuando ejecutamos una reducción en una matriz de enteros usando la multiplicación, iniciamos nuestra operación con un 1 (el elemento de identidad).
Considere la siguiente operación:
1 + 2 + 3 ⇒ [1,2,3] |> Lista.reducir (+)
En lugar de tener que escribir todo ese código donde escribimos un número, escriba a +, escriba otro número, y podemos alimentar una lista de números en nuestra función de reducción que aplica la operación + a cada elemento y acumula la suma.
Más ejemplos…
¿Dónde encaja un monoide en la jerarquía de la clase de tipos?
Depende de la implementación que estemos viendo. Por ejemplo, en la biblioteca FantasyLand JavaScript, un monoide es un semigrupo:
Mientras que, en Haskell, una mónada es un monoide:
Los monoides proporcionan la capacidad asociativa de agregar elementos a una lista, que las mónadas pueden reutilizar.
En pocas palabras : los monoides proporcionan asociatividad e identidad que son requisitos para la composición. Nos ayudan a diseñar un software más reutilizable y nos ayudan a mejorar su rendimiento.
Puede encontrar una discusión, explicación y ejemplos de código mucho más exhaustivos en mi libro.
¡Salud!
Lex