Понятие монады в философии
Монада в философии – это очень многоплановое понятие, поскольку оно изучалось многими философами начиная с древних времен. Впервые данный термин возник в античной философии, поэтому он имеет греческие корни. Греческое слово monas означает буквально «целое», «единица». Пифагорейцы употребляли его, когда хотели описать первое существо, имеющее божественное происхождение, подчеркивая при этом, что эта субстанция едина и неделима.
Древнегреческая философия стала основой появления европейской культуры. Учения философов Древней Греции были развиты просвещенными людьми Нового времени – философами, психологами и эзотериками. Однако несмотря на преемственность знаний в научном мире, смысл и значение слова «монада» в течение нескольких столетий варьировались и неоднократно менялись.
Монада в теософских учениях Е. П. Блаватской
Значимый вклад в определение психических субстанций внесла в XIX веке Е. П. Блаватская, религиозный философ и основательница Теософского общества. Понятие «монада» в эзотерических учениях Е. П. Блаватской присутствует в таких ее трудах, как «Тайная доктрина» и «Разоблаченная Изида».
Ее учение основывалось на основных концепциях и терминах буддизма. Монада определяется в теософии как объединенная триада (Атма-Буддхи-Манас) или дуада (Атма-Буддхи). В любом случае термин, принятый в Теософском обществе, не отменяет единой сущности данной философской единицы, которая представляет часть человека, являющуюся вечной, т. е. бессмертной. Монада начинает свой путь в низших царствах и в ходе постепенной эволюции, перевоплощаясь в более развитые формы, передвигается к миру человека. Дальнейшая ее цель – достижение высшей степени совершенства и святости, то есть нирвана.
Функция монады согласно эзотерическим учениям
Монада взяла на себя функцию трансмутации материи в дух. Данная субстанция не есть человек, она является независимой и самостоятельной искрой света, которая в какой-то мере руководит человеком и направляет его развитие из Высшего мира. Она словно соединяет в человеке материю и дух и воплощает тем самым принцип жизни на земле.
Под влиянием монады человек борется со своим эго и улучшает свою индивидуальность. Его прогресс выражается в уровне духовного развития личности. Постепенно низшие чувства, пагубные желания и страсти исчезают в очищающем огне духовного познания и развития и преобразуются в самые светлые и утонченные качества и чувства. Продвижение личности продолжается до тех пор, пока человек в полной мере не выполнит миссию и задачу, определенную и заложенную Творцом.
Итак, каждому человеку стоит обратить внимание на такое понятие, как монада, значение его очень важно. Несмотря на всю сложность данной темы, необходимо приблизиться к этому философскому и эзотерическому знанию, ведь эта субстанция – отражение духовного пути человека к миру высшему, Божественному. Обнаружив в себе искру Божьего духа, то есть монаду, постигая сокровенные знания и развивая в себе заложенный высшими силами потенциал духовности, каждый может продвинуться на своем пути, осознать свое истинное предназначение, ощутить гармонию внутри себя и невидимую, но прочную связь со всем миром
Обнаружив в себе искру Божьего духа, то есть монаду, постигая сокровенные знания и развивая в себе заложенный высшими силами потенциал духовности, каждый может продвинуться на своем пути, осознать свое истинное предназначение, ощутить гармонию внутри себя и невидимую, но прочную связь со всем миром.
Гистограмма как комонада
Комонада будет в примере выполнять роль связующего звена между расчётом, хранением и отображением. Тип её данных я сделал таким
Не всякий тип подходит для создания комонады. Не обязательно такой, как приведён выше: значение и функция от этого значения в произвольный тип. Но тип должен позволять выполнять с ним некоторую рекурсию. В данном случае, можно рекурсивно вызывать функцию HistoEngine x -> a. В других случаях используют рекурсивные типы данных – списки, деревья.
И так, делаем тип Histogram комонадой
Это всё.
Функция extract :: w a -> a (где w – комонада, буква w, принятое обозначение для комонад – m кверх ногами) соответствует в монаде return, но делает обратное действие, возвращает значение из комонады. В некоторых статьях её именовали coreturn (назвать её nruter, кажется, ещё, никто не додумался).
Эта функция далее будет использоваться напрямую. В отличии от функции duplicate :: w a -> w (w a), которая соответствует для монад join :: (Monad m) => m (m a) -> m a, только, опять, с противоположным смыслом. Join удаляет один слой монады, а duplicate дублирует слой комонады. Вызов её непосредственно далее не встретится, но duplicate вызывается внутри других функций пакета comonad, в частности, в extend :: (w a -> b) -> w a -> w b. Собственно, комонаду можно определить, как через extract, duplicate (и Functor), так и через extract, extend, смотря как удобнее.
И так, сама комонада готова. Переходим к следующему этапу.
Исключения
Простейшая реализация обработки исключений в чистых функциях состоит в добавлении в тип возвращаемого значения специального варианта, обозначающего, что что-то пошло не так.
Для этого подойдёт, к примеру, уже рассмотренный функтор . При штатной работе функции будут возвращать значение в конструкторе , при возникновении ошибки — значение . Композиция таких обогащённых функций должна работать таким образом, чтобы каждая следующая функция не вызывалась, если ошибка уже произошла в предыдущем вызове:
Определение методов класса для :
Недостаток этого подхода состоит в том, что исключение никак не конкретизируется. Мы просто знаем, что в какой-то из функций, участвовавшей в композиции, произошла какая-то ошибка. С этой точки зрения удобнее будет использовать тип , который представляет собой альтернативу двух значений: либо это строка с описанием ошибки, либо результат штатной работы функции. В общем виде тип определяется так:
Для классификации ошибок можно использовать перечислимый тип или любую другую структуру данных, подходящую для конкретной задачи. Мы в примерах продолжим использовать просто строку. Введём синоним типа для работы с исключениями:
Композиция функций описывается аналогично случаю с использованием :
Определение экземпляра класса уже не должно вызывать трудностей:
Эволюционное развитие монад
Блаватская считала, что наша планета Земля должна существовать на протяжении семи циклов – так называемых кругов. Первые три цикла включают в себя ее формирование и обретение твердой формы, в четвертом круге она характеризуется четкими твердыми формами и стабильностью, в течение последних трех циклов Земля возвращается к своему исходному, духовному, состоянию.
В соответствии с данными представлениями об эволюции Земли, Блаватская выделяла три класса монад:
- Класс наиболее развитых, которые быстрее всех проходят циклы развития в царстве минералов, растений и животных в течение первого круга и становятся людьми.
- Монады, которые развиваются медленнее и проходят весь цикл развития до стадии человека в течение трех с половиной кругов.
- Монады с запоздалым развитием, которые достигнут цели с опозданием либо не смогут прийти к ней вовсе в течение этого цикла по причине кармических затруднений различного характера.
Недетерминированные вычисления
Абстракция недетерминированных вычислений (т.е. таких, у которых может быть несколько возможных результатов) реализуется с помощью списков.
Композиция обогащённых функций должна иметь тип . Достаточно опытному программисту реализация может быть понятна из одной этой сигнатуры:
Типы практически не оставляют возможности сделать неверный шаг. Получив значение типа , единственное, что можно с ним сделать — это применить функцию и получить список . Далее всё, что мы умеем делать со значениями типа — применить функцию к каждому из них в списке и получить в результате список списков: . Чтобы получить нужный результат, конкатенируем их.
Тогда оператор можно записать так:
Осталось реализовать функцию . Здесь реализация снова выводится из типа:
Резюмируем эти реализации в классическом определении класса :
Конечно, список как результат функции не обязательно обозначает недетерминированность вычислений. Хорошим примером, когда это действительно так, является реализация искусственного интеллекта для игр. Список может представлять возможные результаты хода игрока, ответных ходов может быть тоже несколько — всё время приходится работать со списками, списками списков и т.д.
Алгебры для монады
Учитывая монаду в категории , естественно рассматривать -алгебры , т. Е. Объекты C, на которые T действует таким образом, который совместим с единицей и умножением монады. Более формально, A Т – алгебра является объектом из вместе со стрелкой из называется структурная карта алгебры , такие , что диаграммы
(Т,η,μ){\ displaystyle (T, \ eta, \ mu)}C{\ displaystyle C}Т{\ displaystyle T}(Икс,час){\ Displaystyle (х, ч)}Икс{\ displaystyle x}C{\ displaystyle C}часТИкс→Икс{\ displaystyle h \ двоеточие Tx \ to x}C{\ displaystyle C}
а также |
добираться.
Морфизм из -алгебр является стрелкой из такой , что диаграммыж(Икс,час)→(Икс′,час′){\ Displaystyle е \ двоеточие (х, ч) \ к (х ‘, ч’)}Т{\ displaystyle T}жИкс→Икс′{\ displaystyle f \ двоеточие x \ to x ‘}C{\ displaystyle C}
ездит на работу. T -алгебры образуют категорию, называемую категорией Эйленберга – Мура и обозначаемую .
CТ{\ displaystyle C ^ {T}}
Алгебры над свободной групповой монадой
Например, для монады свободной группы, обсуждаемой выше, T -алгебра – это множество X вместе с отображением свободной группы, порожденной X, в сторону X, подчиняющуюся условиям ассоциативности и унитальности. Такая структура эквивалентна утверждению, что X сама является группой.
Алгебры над монадой распределений
Другой пример – монада распределения по категории множеств. Он определяется отправкой набора в набор функций с конечной поддержкой и таких, что их сумма равна . В обозначении конструктора наборов это наборD{\ displaystyle {\ mathcal {D}}}Икс{\ displaystyle X}жИкс→,1{\ displaystyle f: X \ до }1{\ displaystyle 1}
Путем проверки определений можно показать, что алгебры над монадой распределения эквивалентны выпуклым множествам , т. Е. Множествам, снабженным операциями для подчиненных аксиомам, напоминающим поведение выпуклых линейных комбинаций в евклидовом пространстве.
Икс+ру{\ displaystyle x + _ {r} y}р∈,1{\ Displaystyle г \ в }рИкс+(1-р)у{\ displaystyle rx + (1-r) y}
Алгебры над симметричной монадой
Другой полезный пример монады – функтор симметрической алгебры в категории -модулей для коммутативного кольца .р{\ displaystyle R}р{\ displaystyle R}
отправляя -модуль в прямую сумму симметричных тензорных степенейр{\ displaystyle R}M{\ displaystyle M}
где . Например, где -алгебра справа рассматривается как модуль. Тогда алгебры над этой монадой являются коммутативными -алгебрами. Существуют также алгебры над монадами для переменных тензоров и полных тензорных функторов, дающих антисимметрические -алгебры и свободные -алгебры, так чтоСим(M)знак равнор{\ displaystyle {\ text {Sym}} ^ {0} (М) = R}Сим∙(р⊕п)≅рИкс1,…,Иксп{\ displaystyle {\ text {Sym}} ^ {\ bullet} (R ^ {\ oplus n}) \ cong R }р{\ displaystyle R}р{\ displaystyle R}Alt∙(-){\ displaystyle {\ text {Alt}} ^ {\ bullet} (-)}Т∙(-){\ Displaystyle Т ^ {\ пуля} (-)}р{\ displaystyle R}р{\ displaystyle R}
где первое кольцо – это свободная антисимметрическая алгебра над ин- образующими, а второе кольцо – это свободная алгебра над ин- образующими.
р{\ displaystyle R}п{\ displaystyle n}р{\ displaystyle R}п{\ displaystyle n}
Коммутативные алгебры в E-бесконечных кольцевых спектрах
Аналогичная конструкция для коммутативных -алгебр S{\ Displaystyle \ mathbb {S}}pg 113 дает коммутативные -алгебры для коммутативных -алгебр . Если – категория -модулей, то функтором является монада, заданная формулойА{\ displaystyle A}S{\ Displaystyle \ mathbb {S}}А{\ displaystyle A}MА{\ displaystyle {\ mathcal {M}} _ {A}}А{\ displaystyle A}пMА→MА{\ displaystyle \ mathbb {P}: {\ mathcal {M}} _ {A} \ to {\ mathcal {M}} _ {A}}
где
j{\ displaystyle j}-раз. Тогда существует ассоциированная категория коммутативных -алгебр из категории алгебр над этой монадой.
CА{\ displaystyle {\ mathcal {C}} _ {A}}А{\ displaystyle A}
Определение
Категории сами по себе — очень простые конструкции. Категория — это набор объектов и морфизмов между ними. Морфизмы можно рассматривать как однонаправленные стрелки, соединяющие объекты. В общем случае про сущность самих объектов ничего не известно. Теория категорий работает не с объектами, а с морфизмами, точнее — с их композицией.
Используется следующая нотация:
- ObC — объекты категории C;
- HomC(A, B) — морфизмы из A в B;
- g ∘ f — композиция морфизмов f и g.
В определении категории на морфизмы накладываются дополнительные ограничения:
- Для пары морфизмов f и g, если f — морфизм из A в B (f ∈ Hom(A, B)), g — морфизм из B в C (g ∈ Hom(B, C)), то существует их композиция g ∘ f — морфизм из A в C (g ∘ f ∈ Hom(A, C)).
- Для каждого объекта задан тождественный морфизм idA ∈ Hom(A, A).
Существуют два важных свойства, которым должна удовлетворять любая категория (аксиомы теории категорий):
- Ассоциативность композиции: h ∘ (g ∘ f) = (h ∘ g) ∘ f;
- Композиция с тождественным морфизмом: если f ∈ Hom(A, B), то f ∘ idA = idB ∘ f = f.
Категории очень легко и естественно визуализируются как ориентированные графы. В принципе, любой ориентированный граф можно достроить до категории, добавив композиции морфизмов и тождественные морфизмы, если необходимо.
Для любой категории можно определить двойственную категорию (обозначается Cop, в которой морфизмы получены разворотом стрелок исходной категории, а объекты — те же самые. Это позволяет формулировать двойственные утверждения и теоремы, истинность которых не меняется при обращении стрелок.
Объекты и морфизмы не обязательно образуют множества (в классическом смысле из теории множеств), поэтому в общем случае используется словосочетание “класс объектов”. Категории, в которых классы объектов и морфизмов всё-таки являются множествами, называются малыми категориями. Далее мы будем работать только с ними.
литература
- Хубертус Буше: путь Лейбница в перспективную Вселенную. Гармония в эпоху расчета. Meiner, Hamburg 1997, ISBN 3-7873-1342-7 .
- Хайнц Хеймсёт: атом, душа, монада. Историческая справка и предыстория кантовской антиномии разделения. Штайнер, Висбаден, 1960.
- Ганс Позер: О концепции монады у Лейбница и Вольфа. В: Альберт Хейнекамп и др. (Ред.): Метафизика, Этика, Эстетика, Теория Монад . (= Studia Leibnitiana / Приложение 14). Steiner, Wiesbaden 1975, ISBN 3-515-01924-3 .
- Клаус Дж. Роде: Духовное тело. Интерпретация доктрины монад Лейбница. Издание «Другая книга», Оснабрюк, 2002 г., ISBN 3-89959-002-3 .
- Карл Фогель: Кант и парадоксы множественности. Учение о монадах в философском развитии Канта до главы об антиномиях «Критики чистого разума». Издание Hain, Meisenheim / Glan 1975, ISBN 3-7873-1342-7 .
Комонадные трансформеры
Так же, как и для монад, для комонад существуют трансформеры (правда их очень мало, но кто нам мешает писать свои). То есть комонады могут быть вложенными.
Предположим, мы хотим установить ширину поля для вывода чисел в самом начале, когда только создали пустую гистограмму.
Подключим ещё один модуль
который реализует комонаду по смыслу соответствующую монаде Reader.
Пример в функции main теперь будет выглядеть так
С помощью (EnvT 5 (…)) мы создаём ещё один комонадный слой и сохраняем в нём значение 5 (желаемую ширину для полей чисел)
Поскольку теперь комонадное выражение двухслойное, то, для применения наших функций, использующих комонаду Histogram, требуется вспомогательная функция lower, подобно тому, как в монадных трансформерах для перехода к предыдущему слою используют lift.
Так же обратите внимание на извлечение значения — (ask h). Ну чем не Reader!
Последний пример можно записать и по другому, разобрав в конце два слоя комонад на пару (значение, внутренняя комонада) c помощью функции runEnvT, название которой жирно намекает на runReaderT используемую с ReaderT
Примечания
- Compact Oxford English Dictionary.
- Sandywell, p. 205. The generation of the number-series is to the Pythagoreans, in other words, both the generation of the objects of geometry and also cosmogony. Since things equal numbers, the first unit, in generating the number series, is generating also the physical universe. (KR: 256) From this perspective ‘the monad’ or ‘One’ was readily identified with the divine origin of reality.
- Диоген Лаэртский, Жизнеописания великих философов.
- This Pythagorean cosmogony is in some sense similar to a brief passage found in the Daoist Laozi: «From the Dao comes one, from one comes two, from two comes three, and from three comes the ten thousand things.» (道生一、一生二、二生三、三生萬物。) Dao De Jing, Chapter 42
- Платонов К. К. Структура и развитие личности. — М.: «Наука», 1986. — С. 10. — 256 с.
- ↑ Готфрид Вильгельм Лейбниц. Сочинения в четырёх томах. Том 1. — М.: «Мысль», 1982. — С. 413—429.
- ↑ Философский энциклопедический словарь. 1989
- ↑ Блинников Л. В. Великие философы: учебный словарь-справочник, изд. 2. — М., 1997. — 432 с.
- ↑ Философская Энциклопедия. В 5-х т. Под редакцией Ф. В. Константинова. 1960—1970
- В. Лейбниц // Большая энциклопедия Кирилла и Мефодия. 2004
- ↑ Философский энциклопедический словарь. — 2010.
- Новейший философский словарь / Сост. А. А. Грицанов. 1998
- Гуссерль Э. Картезианские размышления. — СПб.: Наука, 2001. — С. 155, § 33.
набухать
- Георгий Шишкофф (Ред.): Философский словарь. 14-е издание. Альфред-Крёнер, Штутгарт 1982, ISBN 3-520-01321-5 , стр. 462 о лемме «Монада» и стр. 439 f. к лемме «материя».
- Иммануил Кант: Критика чистого разума . B 319, 329, 326ff. (Критика Лейбница) ср. а. 316f. (Амфиболия).
- Карл Маркс: По еврейскому вопросу . В: МЭВ. Том 1, 1844 г., с. 364.
- Габриэль Тард: Monadologie et sociologie, Revue Internationale de Sociologie 1893, немецкая монадология и социология. Зуркамп, Франкфурт-на-Майне, 2008 г.
- См., Например, Б. Уилфред Краузе: инерциальная система отсчета. В: Журнал общей философии науки. Том 23, № 1, 1992 г., стр. 61-83.
- Степан Мохорович: Теория относительности Эйнштейна и ее математический, физический и философский характер, de Gruyter, Берлин 1923-е.
Текст
Первая страница рукописи Монадологии
Во время своего последнего пребывания в Вене с 1712 по сентябрь 1714 года Лейбниц написал два коротких текста на французском языке, которые были задуманы как краткие изложения его философии. После его смерти Principes de la nature et de la grâce fondés en raison , предназначенная для принца Евгения Савойского , появилась на французском языке в Нидерландах. Кристиан Вольф и его сотрудники опубликовали переводы на немецкий и латынь второго текста, который стал известен как «Монадология» . Не ознакомившись с голландской публикацией Принципов, они предположили, что это был французский оригинал Монадологии, который фактически оставался неопубликованным до 1840 года.
Немецкий перевод появился в 1720 году как Lehrsätze über die Monadologie, а в следующем году Acta Eruditorum напечатал латинскую версию как Principia Философия . Есть три оригинальные рукописи текста: первая написана Лейбницем и содержит завышенную цену с исправлениями, и две дальнейшие исправленные копии с некоторыми исправлениями, появившимися в одной, но не в другой. Сам Лейбниц вставил ссылки на абзацы своей Теодицеи («Теодицея», т. Е. Оправдание Бога), посылая туда заинтересованного читателя для более подробной информации.
Монада после Лейбница
В немецкой школьной метафизике, изобретенной Кристианом Вольфом (1679–1754), теория монад Лейбница обычно принималась только в модифицированной форме. Сам Вольф говорит о «первых элементах», которым, однако, недостает метафизического качества. В знаменитом «Споре о монаде» Берлинской академии наук в 1747 году была присуждена премия, которая, исходя из геометрических соображений, отвергла теорию монад. Широкие журналистские дебаты об этом суждении в современных научных журналах указывают на раскол между университетом Просвещения под влиянием Лейбница и Вольфом в Германии и Академией Фредерикана под влиянием Франции и Англии в Берлине (названной в честь Фридриха Великого).
Критика, которую Иммануил Кант (1724–1804) применяет в главе о амфиболизме «Критики чистого разума» доктрины монад, на самом деле основана на ее размытой, лейбницевской форме. Ранний Кант больше не рассматривал монады как метафизические, но только как физические и, следовательно, бездушные точки, а именно как заполняющие пространство сферы с притягательной и отталкивающей силой. В «Критике чистого разума» Кант говорит, что Лейбниц думает о монадах как о Нуменах [греч. νοούμενον noúmenon или множественное число νοούμενα noúmena = то, что мыслится] (KrV B 321 f. – амфиболизм концепций отражения ).
Немногочисленные теории XIX и XX веков, которые все еще претендуют на концепцию монады, характеризуются очень разными контекстами. У Иоганна Фридриха Гербарта (1776–1841) «монада» относится к «простому реальному существу» любого вида души. В своей работе по еврейскому вопросу 1844 года Карл Маркс описывает свободу в гражданском обществе как свободу человека как изолированной, замкнутой монады. Врач Рудольф Вирхов (1821–1902) даже называет клетки тела монадами, поскольку каждая из них индивидуальна. В частности, для обозначения одноклеточных организмов термин «монада» использовался как суффикс -monas. Напротив, некоторые философы 20-го века используют центральную концепцию Лейбница в более вдохновленном Кантом или Декартом смысле; так Ричард Хенигсвальд (1875-1947) и Вольфганг Крамер (1901-1974) за принцип субъективности, Эдмунд Гуссерль конкретно за эго (1859-1938). С другой стороны, в случае криминолога и социолога Габриэля Тарде (1843–1904) монады являются частью философии обладания, а не бытия, которая объясняет, как в обществе, которое является столь же однородным, как и прерывистым, эти элементы существуют отдельно как монады, обладая друг другом.
В натурфилософии термин “ монада ” также используется как воплощение концепции пространства , диаметрально противоположной концепции пространства Ньютона : пространство и весомые тела не существуют бок о бок, как две независимые подсистемы космоса, но каждое тело имеет свое собственное бесконечно протяженное пространство. окружать. В этом смысле физическая интерпретация преобразования Лоренца Сжепаном Мохоровичичем , известная как специальная теория относительности , получила название «монадология».
Состояния
Пример с логгером, с которого мы начинали, реализует работу с write-only состоянием, но хотелось бы использовать состояние и для чтения. Модифицируем тип функции так, чтобы получить обогащённую функцию, работающую с состоянием. Добавим в тип функции один аргумент, обозначающий текущее состояние, а также изменим тип возвращаемого значения (теперь это пара, состоящая из самого значения и изменённого состояния):
Объявим синоним типа для работы с состоянием:
Фиксируем тип состояния и покажем, что является функтором. Нам понадобится вспомогательная функция :
Реализация класса :
Таким образом, обогащённые функции из в , в которых ведётся работа с состоянием, имеют тип , причём — функтор. Попробуем превратить его в монаду, реализовав их композицию:
Отсюда получим реализацию класса . Тождественный морфизм, функция , ничего не делает с состоянием, а просто добавляет свой аргумент в пару-результат:
Функция для чтения состояния должна всегда возвращать текущее состояния, ей не нужны аргументы. Можно сказать, что это морфизм из в в категории Клейсли, поэтому функция должна иметь тип :
Конечно, в реализации можно опустить. Здесь он добавлен для того, чтобы показать эту операцию с точки зрения теории категорий.
Запись состояния, наоборот, принимает новое значение состояния и записывает его. Нам важен только побочный эффект, но не возвращаемое значение, поэтому соответствующий морфизм идёт в обратную сторону, из в , а функция имеет тип :
Реализация работы с состоянием вышла чуть более сложной, чем предыдущие примеры, но на её основе можно создать формальную модель для работы с вводом/выводом. В ней предполагается, что “окружающий мир” реализован в виде некоторого типа , о котором неизвестно никаких подробностей. При общении с внешним миром программа получает на вход объект типа и производит какие-то действия, в результате которых получает нужный ей результат и изменяет внешний мир (например, выводит строку на экран или читает символ из потока ввода). Эту абстрактную концепцию можно реализовать с помощью состояния:
Тип — один из первых, о котором узнаёт начинающий пользователь Haskell, и наверняка сразу встречает пугающее слово “монада”. Такой упрощённый взгляд на этот тип как на состояние для работы с внешним миром может помочь понять, почему это так. Кончено, это описание очень поверхностно, но полноценный рассказ о том, как на самом деле реализован ввод-вывод, зависит от компилятора и выходит далеко за рамки статьи.
Важнейшие философские учения о монаде
Итальянский ученый Джордано Бруно и немецкий ученый Готфрид Вильгельм Лейбниц, чьи труды стали известными в XVI-XVIII веках, можно назвать «посвященными» философами, поскольку их изыскания вмещали в себя и божественное, и научное знание. Нужно сказать, что со времен их исследований в философских представлениях о монаде мало что изменилось. Дело в том, что не каждый ученый современности рискнет совместить научные и оккультные знания и представить их миру в виде единой логичной системы.
Понять истинный глубокий смысл монады невозможно без погружения в оккультизм, ведь знание о божественном принадлежит к разряду великих откровений и тайн, которые недоступны большинству обычных людей. Среднестатистический человек, к сожалению, чаще всего может воспринимать лишь реалии земного мира, обходя при этом духовную сторону явлений.
Джордано Бруно и Лейбниц признавали наличие нематериального мира. Например, по мнению Лейбница, монада – это одушевленная нематериальная субстанция. Развиваясь и усложняясь, она поднимает материю в сферу божественную, космическую.
В чём хранить
Будем хранить накапливаемые значения (ячейки или карманы гистограммы) в немутабельном векторе. Подключим
И запишем
Пора написать функцию создающую исходную комонаду-гистограмму с пустыми ячейками.
Всё просто. Описываем лямбда функцию выделяющую вектор заданного размера заполненный нулями и воспользуемся созданной ранее mkHistoEngine для создания HistoEngine. Параметры mkHisto просто передаются к mkHistoEngine.
Теперь напишем функцию накопления отсчётов в гистограмме.
Напомню, что если у монадных функций, монада указывается в типе результата функции, то у комонадных она в аргументе. С помощью histoEngPosFn получаем созданную в mkHistoEngine функцию типа CalcPos. В зависимости от её результата увеличиваем на единицу соотвествующую ячейку вектора или возвращаем вектор неизменным. Сам же вектор получаем выражением extract h.
Для того, что бы не привязывать алгоритм отображения гистограммы к её хранению и накоплению, примем, что для отображения она должна быть представлена списком. Это допустимо, т. к. для отображения список будет обрабатываться меньшее число раз и всегда последовательно. (Способ хранения гистограммы при накоплении можно изменить, например, на более эффективный мутабельный вектор, но это не должно привести к изменениям в функциях отображения гистограммы).
И так, комонадная функция преобразования представления данных гистограммы из вектора в список. Она тоже тривиальна.
Монады и присоединения
Как было сказано выше, любое присоединение порождает монаду. И наоборот, каждая монада возникает из некоторого присоединения, а именно присоединения свободно-забывчивого
- Т(-)C⇄CТзабывать{\ displaystyle T (-): C \ rightleftarrows C ^ {T}: {\ text {забыть}}}
левый сопряженный которого переводит объект X в свободную T -алгебру T ( X ). Однако обычно существует несколько различных добавлений, дающих начало монаде: пусть будет категорией, объектами которой являются такие присоединения , что и чьи стрелки являются морфизмами присоединений, на которых тождественны . Тогда указанное выше присоединение типа «свободно-забывчивый», включающее категорию Эйленберга – Мура, является терминальным объектом в . Исходный объект является категория Клейсли , которая по определению полной подкатегории , состоящие только из свободных Т -алгебрах, т.е. Т -алгебрами формы для некоторого объекта х из С .
Аdj(C,Т){\ displaystyle \ mathbf {Adj} (C, T)}(F,грамм,е,ε){\ displaystyle (F, G, e, \ varepsilon)}(граммF,е,граммεF)знак равно(Т,η,μ){\ Displaystyle (GF, е, G \ varepsilon F) = (T, \ eta, \ mu)}C{\ displaystyle C}CТ{\ displaystyle C ^ {T}}Аdj(C,Т){\ displaystyle \ mathbf {Adj} (C, T)}CТ{\ displaystyle C ^ {T}}Т(Икс){\ Displaystyle Т (х)}
Монадические присоединения
Для любого присоединения к ассоциированной монаде T функтор G может быть факторизован как
(FC→D,граммD→C,η,ε){\ Displaystyle (F: C \ к D, G: D \ к C, \ eta, \ varepsilon)}
- D→грамм~CТ→забыватьC,{\ displaystyle D {\ stackrel {\ tilde {G}} {\ to}} C ^ {T} {\ stackrel {\ text {забыть}} {\ to}} C,}
т.е. G ( Y ) может быть естественным образом наделен Т структурой -алгебры для любого Y в D . Присоединение называется монадическим присоединением, если первый функтор дает эквивалентность категорий между D и категорией Эйленберга – Мура . По расширению функтор называется монадическим, если он имеет левое присоединение, образующее монадическое присоединение. Например, присоединение между группами и множествами со свободным забыванием является монадическим, поскольку алгебры над ассоциированной монадой являются группами, как упоминалось выше. В общем, знание того, что присоединение является монадическим, позволяет реконструировать объекты в D из объектов в C и T-действия .
грамм~{\ displaystyle {\ tilde {G}}}CТ{\ displaystyle C ^ {T}}граммD→C{\ Displaystyle G \ двоеточие D \ to C}F{\ displaystyle F}
Теорема Бека монадичности
Теорема Бека об монадичности дает необходимое и достаточное условие монадичности присоединения. Упрощенная версия этой теоремы утверждает, что G монадическая, если она консервативна (или G отражает изоморфизмы, т. Е. Морфизм в D является изоморфизмом тогда и только тогда, когда его образ под G является изоморфизмом в C ) и C имеет и G сохраняет соэквалайзеры .
Например, функтор забывания из категории компактных хаусдорфовых пространств в множества монадичен. Однако забывчивый функтор из всех топологических пространств в множества не является консервативным, поскольку существуют непрерывные биективные отображения (между некомпактными или нехаусдорфовыми пространствами), которые не могут быть гомеоморфизмами . Таким образом, этот забывчивый функтор не монадичен. Двойственная версия теоремы Бека, характеризующая комонадические присоединения, актуальна в различных областях, таких как теория топосов и вопросы алгебраической геометрии, связанные с происхождением . Первым примером комонадического присоединения является присоединение
- -⊗АBMоdА⇄MоdBзабывать{\ displaystyle – \ otimes _ {A} B: \ mathbf {Mod} _ {A} \ rightleftarrows \ mathbf {Mod} _ {B}: \ operatorname {Forgot}}
для гомоморфизма колец между коммутативными кольцами. Это примыкание является comonadic, по теореме Бека, если и только если B является строго плоско , как A – модуль. Таким образом, он позволяет спускаться B -модулям, снабженным данными спуска (т. Е. Действием комонады, заданным присоединением) к A -модулям. Полученная в результате теория строго плоского спуска широко применяется в алгебраической геометрии.
А→B{\ displaystyle от A \ до B}
История возникновения термина
На протяжении нескольких веков значение термина «монада» многократно уточнялось. Ученые разных эпох приписывали ему несколько значений. Если собрать воедино их мнения, то монада – это единица, обожествленная субстанция, единое, постоянно меняющее свое состояние, непрерывная деятельность, основная единица бытия и т. д. Но начнем по порядку.
Пифагорейцы, занимавшиеся математическими вопросами, видели в монаде точку отсчета и источник происхождения всех чисел. Для них она символизировала единицу в широком смысле этого слова, которая дала начало всем геометрическим и космогоническим объектам. Между тем они не ставили между данной субстанцией и единицей знак равенства, поскольку монада – это олицетворение мысли, а единица была лишь числом.
Последователи Платона также пользовались этим философским термином. Для неоплатоников же монада – это скорее «Единое». По крайней мере, последний термин фигурирует в трудах Ямвлиха, Порфирия и Плотина чаще, чем общеупотребительный.
Древнегреческая философия отличалась большим количеством течений. Например, представители гностицизма и неопифагорейцы тоже развивали в своих учениях представления о монаде, однако сам термин в их трудах может переводиться как «Абсолют».