monad(redirected from Monads)
Also found in: Dictionary, Thesaurus, Medical, Legal.
monad:see Bruno, GiordanoBruno, Giordano
, 1548–1600, Italian philosopher, b. Nola. The son of a professional soldier, he entered the Dominican order early in his youth and was ordained a priest in 1572, but he was accused of heresy and fled (c.1576) to take up a career of study and travel.
..... Click the link for more information. ; Leibniz, Gottfried Wilhelm, Baron vonLeibniz or Leibnitz, Gottfried Wilhelm, Baron von
, 1646–1716, German philosopher and mathematician, b. Leipzig.
..... Click the link for more information. .
a concept used in a number of philosophical systems to designate the constituents of existence. In classical philosophy this concept was introduced as the first, or all-explaining, principle by Pythagoreanism, which regarded number and proportion as the source of all things. From the Pythagoreans the concept of the monad was adopted by Plato (the dialogue Philebus) and by the Neoplatonists, who interpreted it pantheistically as the first principle that unfolds and reproduces itself in many things by means of emanation.
The concept entered modern philosophy in the pantheism of Nicholas of Cusa and G. Bruno. According to Bruno, monads mirror the infinite universe in accordance with the principle of the unity of the microcosm and the macrocosm. In the 17th century the concept of the monad was important in the philosophy of the Spanish scholastic F. Suárez, the English Platonist Henry More, and the German natural philosopher F. M. van Helmont. It was the pivotal concept for the entire philosophical system of G. W. von Leibniz, who developed the doctrine of monadology. According to his definition, a monad is an ultimate and simple (irreducible) active substance that has a spiritual nature and that apprehends and mirrors the entire world. There is an infinite number of monads, all of which coexist in a state of preestablished harmony. Because the spiritual nature of monads precludes their interaction, harmony among them is reduced to a divinely preestablished cosmic unity. Although it was a classical doctrine of objective idealism, Leibniz’ monadology played an important role in the spread of a dynamic, dialectical view of nature. It contained such ideas as the principle of the universal interrelation of things, the principle of the uniformity of natural laws, the law of conservation, and the concept of universal variability and self-development.
After Leibniz the concept of monads was elaborated in the spirit of idealistic rationalism by the followers of C. von Wolff. In the 19th century the ideas of monadology were echoed in the views of a number of German philosophers, including J. Herbart and R. Lotze, and in the 20th century, in the philosophy of E. Husserl (Germany), A. Whitehead (Great Britain), and R. Honigswald (Germany-USA). The monadological approach is the foundation for the philosophical views of many of the representatives of personalism, including C. Renouvier, H. Carr, and J. McTaggart.
REFERENCESLenin, V. I. Poln. sobr. soch., 5th ed., vol. 29, pp. 67–76.
Cramer, W. Die Monade: Das philosophische Problem von Ursprung. Stuttgart, 1954.
Heimsoeth, H. Atom, Seele, Monade.…. Mainz, 1960.
Horn, J. C. Monade und Begriff. Wiesbaden-Munich, 1965.
G. G. MAIOROV
monad(theory, functional programming)
A monad has three components: a means of augmenting an existing type, a means of creating a default value of this new type from a value of the original type, and a replacement for the basic application operator for the old type that works with the new type.
The alternative to passing state via a monad is to add an extra argument and return value to many functions which have no interest in that state. Monads can encapsulate state, side effects, exception handling, global data, etc. in a purely lazily functional way.
A monad can be expressed as the triple, (M, unitM, bindM) where M is a function on types and (using Haskell notation):
unitM :: a -> M a bindM :: M a -> (a -> M b) -> M b
I.e. unitM converts an ordinary value of type a in to monadic form and bindM applies a function to a monadic value after de-monadising it. E.g. a state transformer monad:
type S a = State -> (a, State) unitS a = \ s0 -> (a, s0) m `bindS` k = \ s0 -> let (a,s1) = m s0 in k a s1
Here unitS adds some initial state to an ordinary value and bindS applies function k to a value m. (`fun` is Haskell notation for using a function as an infix operator). Both m and k take a state as input and return a new state as part of their output. The construction
m `bindS` k
composes these two state transformers into one while also passing the value of m to k.
Monads are a powerful tool in functional programming. If a program is written using a monad to pass around a variable (like the state in the example above) then it is easy to change what is passed around simply by changing the monad. Only the parts of the program which deal directly with the quantity concerned need be altered, parts which merely pass it on unchanged will stay the same.
In functional programming, unitM is often called initM or returnM and bindM is called thenM. A third function, mapM is frequently defined in terms of then and return. This applies a given function to a list of monadic values, threading some variable (e.g. state) through the applications:
mapM :: (a -> M b) -> [a] -> M [b] mapM f  = returnM  mapM f (x:xs) = f x `thenM` ( \ x2 -> mapM f xs `thenM` ( \ xs2 -> returnM (x2 : xs2) ))