<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://absurdopedia.wiki/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=81.3.180.50</id>
	<title>Абсурдопедия - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://absurdopedia.wiki/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=81.3.180.50"/>
	<link rel="alternate" type="text/html" href="https://absurdopedia.wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/81.3.180.50"/>
	<updated>2026-06-30T17:28:17Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://absurdopedia.wiki/w/index.php?title=%D0%9B%D1%83%D0%BA%D1%8C%D1%8F%D0%BD%D0%B5%D0%BD%D0%BA%D0%BE&amp;diff=36290</id>
		<title>Лукьяненко</title>
		<link rel="alternate" type="text/html" href="https://absurdopedia.wiki/w/index.php?title=%D0%9B%D1%83%D0%BA%D1%8C%D1%8F%D0%BD%D0%B5%D0%BD%D0%BA%D0%BE&amp;diff=36290"/>
		<updated>2008-03-25T09:34:27Z</updated>

		<summary type="html">&lt;p&gt;81.3.180.50: /* Другие произведения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{q|…одной ногой он стоял в прошлом, другой приветствовал будущее, а между ног у него была страшная действительность.|Дарт Херохито|Лукьяненко}}&lt;br /&gt;
{{q|Зачем Вы травите Писателя?|Лукьяненко|эту статью}}&lt;br /&gt;
{{q|...и я вошёл в Сумрак.|Лукьяненко|районные перебои с электричеством}}&lt;br /&gt;
&#039;&#039;&#039;Сергей Вурдалакович Чеснокьяденко&#039;&#039;&#039; (родился в 1472 г.), более известный под творческим псевдонимом Лукьяненко - главный Иной, властелин Тёмных и Светлых, а также - создатель Сумрака. В бывшем - известный писатель-классик, отец русского языка и литературы. По родословной является внуком Вия, сыном Воланда и старшим братом [[сисадмин|вэбмастер]]а [[Мицгол]]а. Его произведения были инспирированы посредством внедрения чипов в его подсознание американскими спецлужбами и призваны остановить возрождение [[коммунизм|марксистско-джедаистского]] мировоззрения на просторах бывшего СССР.&lt;br /&gt;
&lt;br /&gt;
== Основные произведения ==&lt;br /&gt;
&lt;br /&gt;
=== Септология «[[Дозор]]ы» ===&lt;br /&gt;
Давным-давно, когда лето ещё было длинным, а трава зелёной, [[силы света]] и [[силы тьмы]] бились не на [[жизнь]], а на [[смерть]] за право решать судьбы мира. И поняли они однажды, что в бесконечной борьбе погибнут все, и не станет больше [[Пепси]], и не будет крепкого [[Советский Союз|советского]] [[Рубль|рубля]]. И заключили стороны договор о перемирии. И было сказано: отныне ни своих, ни чужих нельзя мочить без согласия.&lt;br /&gt;
&lt;br /&gt;
И создан был Советский Дозор, чтобы следить за силами [[США|Штатов]], и Буржуйский Дозор, чтобы следить за Страною Советов. Но через семьдесят лет, когда договор потеряет силу, придёт великий воин, который встанет во главе [[РАО ЕЭС]]. И весь мир погрузится во тьму…&lt;br /&gt;
&lt;br /&gt;
Но тут вмешался покровитель голубых сил Лукьяненко и основал Китайский дозор, дабы следить за количеством народонаселения мира. &lt;br /&gt;
&lt;br /&gt;
* Будунный дозор&lt;br /&gt;
* Геморойный дозор&lt;br /&gt;
* Советский дозор&lt;br /&gt;
* Буржуйский дозор&lt;br /&gt;
* Китайский дозор&lt;br /&gt;
* Последний дозор&lt;br /&gt;
* Последний китайский дозор&lt;br /&gt;
* Самый последний дозор&lt;br /&gt;
* Не время для дозоров&lt;br /&gt;
* Больше дозоров не будет&lt;br /&gt;
* Наираспоследний из дозоров&lt;br /&gt;
* Дозоры кончились&lt;br /&gt;
* Дозор-2: новое начало&lt;br /&gt;
* Дозор-3: начало новой эры (Дозор-2 и Дозор-3 — отдельные сюжетные ветки, будут развиваться независимо друг от друга, возможно, с переносом критически важных патчей между ветками)&lt;br /&gt;
* Дозор-3а: дом Гесера (альтернативная версия, собираемая из исходников добровольцами)&lt;br /&gt;
* Надоели дозоры, больше не буду&lt;br /&gt;
* Первый дозор&lt;br /&gt;
* Последний позор (Внимание! Это не ошибка, это другая книга с тем же названием.)&lt;br /&gt;
* Наш ответ дозорам&lt;br /&gt;
* В чём смысл дозора?&lt;br /&gt;
* Смерть дозорам!&lt;br /&gt;
* Два часа дозора - и я на даче&lt;br /&gt;
&lt;br /&gt;
=== Другие произведения ===&lt;br /&gt;
Дилогия «&#039;&#039;&#039;Демоны-зомби из космоса&#039;&#039;&#039;»:&lt;br /&gt;
* Кровавая оргия в марсианском аду&lt;br /&gt;
* Демоны-зомби из космоса&lt;br /&gt;
* Демоны-зомби в марсианском аду (издана не была, чтобы не нарушать дилогичности произведений мастера)&lt;br /&gt;
&lt;br /&gt;
Цикл «&#039;&#039;&#039;Истинная Русса&#039;&#039;&#039;» (плагиат):&lt;br /&gt;
* Одесса — мама!&lt;br /&gt;
* Путин — президент!&lt;br /&gt;
* Ющенко - так!&lt;br /&gt;
* Шах, шахевич, фараон, фараоневич&lt;br /&gt;
&lt;br /&gt;
Цикл «&#039;&#039;&#039;Десять принцев Амбера&#039;&#039;&#039;»:&lt;br /&gt;
* Первый принц Амбера&lt;br /&gt;
* Второй принц Амбера&lt;br /&gt;
* Третий принц Амбера&lt;br /&gt;
* Четвёртый принц Амбера&lt;br /&gt;
* (готовится к выпуску) Пятый принц Амбера&lt;br /&gt;
&lt;br /&gt;
Цикл «&#039;&#039;&#039;Тысяча и одна ночь&#039;&#039;&#039;» (на тридцатой ночи печать временно приостановлена).&lt;br /&gt;
&lt;br /&gt;
Виртуальная пенталогия «&#039;&#039;&#039;Лабиринт извращений&#039;&#039;&#039;»:&lt;br /&gt;
* «Катакомбы рефлекторов»&lt;br /&gt;
* «Контрафактные световозвращатели»&lt;br /&gt;
* «Тонированные стёкла»&lt;br /&gt;
* «Тормозные фары»&lt;br /&gt;
* «Карманные фонарики»&lt;br /&gt;
&lt;br /&gt;
== Личная жизнь ==&lt;br /&gt;
&lt;br /&gt;
Писатель Лукьяненко очень любит маленьких детей, особенно мальчиков. Он с подлинной трогательностью и нежностью описывает их образы в своих произведениях.&lt;br /&gt;
Основное хобби великого писателя — кидаться пивными кружками и прочими тяжелыми предметами в коллег-фантастов. ([http://forum2.rusf.ru/lukian/lst/lst_2997.htm])&lt;br /&gt;
Как правило, такие броски спровоцированы вопросами о детях.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Пейсатели]]&lt;br /&gt;
[[Категория:Персоналии]]&lt;br /&gt;
[[Категория:Друзья Пионерии]]&lt;br /&gt;
[[Категория:Тёмные]]&lt;br /&gt;
[[Категория:Гении]]&lt;br /&gt;
[[Категория:Педофилы]]&lt;br /&gt;
[[Категория:Ненаучная фантастика]]&lt;/div&gt;</summary>
		<author><name>81.3.180.50</name></author>
	</entry>
	<entry>
		<id>https://absurdopedia.wiki/w/index.php?title=Haskell&amp;diff=84982</id>
		<title>Haskell</title>
		<link rel="alternate" type="text/html" href="https://absurdopedia.wiki/w/index.php?title=Haskell&amp;diff=84982"/>
		<updated>2007-12-12T15:44:51Z</updated>

		<summary type="html">&lt;p&gt;81.3.180.50: /* Medium - 3 уровень */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{box|StopCpp.gif|96px|&lt;br /&gt;
ВНИМАНИЕ!|&lt;br /&gt;
Для понимания данного материала ваш моск должен быть очищен от императивного мировоззрения путем&lt;br /&gt;
продолжительных медитаций с бубном. Для полного же понимания божественной сущности языка Haskell, ваш моск должен&lt;br /&gt;
быть функционально чист. Возможно, имеет смысл обратиться к [[Ктулху]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{q|&amp;lt;nowiki&amp;gt;[&amp;quot;Пх&#039;нглуи&amp;quot;, &amp;quot;мглв&#039;нафх&amp;quot;, &amp;quot;Ктулху&amp;quot;, &amp;quot;Р&#039;льех&amp;quot;, &amp;quot;вгах&#039;нагл&amp;quot;, &amp;quot;фхтагн&amp;quot;, &amp;quot;!&amp;quot;] &amp;gt;&amp;gt;= print&amp;lt;/nowiki&amp;gt;|Ктулху|[[Haskell]]}}&lt;br /&gt;
&lt;br /&gt;
{{q|The speed of light sucks|Кармак|[[всякое]]}}&lt;br /&gt;
&lt;br /&gt;
{{q|There are only two kinds of languages: the ones people complain about and the functional ones|ТрупСтрауса|[[Haskell]]}}&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Haskell_logo.gif|right|thumb|210px|Логотип Haskell]]&lt;br /&gt;
&lt;br /&gt;
== История Haskell - Версия о Божественной Сущности ==&lt;br /&gt;
[[Изображение:Unsafeperformio.jpg|right|thumb|132px|Иногда Демоническая АрхиМонада ЙО пытается попасть в реальный мир]]&lt;br /&gt;
&#039;&#039;&#039;Haskell&#039;&#039;&#039; - язык программирования, дарованный шаманам &#039;&#039;Бубенлэнда&#039;&#039; их верховным божеством Комонада как универсальное средство общения, подходящее как божественным сущностям, так и (некоторым) простым смертным. Из-за своего происхождения язык всегда был функционально чист.&lt;br /&gt;
&lt;br /&gt;
В честь своего божества и его щедрого подарка шаманы несколько раз в год проводили вычисление Великого Факториала. Со временем шаманам этот праздник надоел, они совсем обленились и перестали вычислять Великий Факториал. От этого Комонада периодически приходила в гнев и отправляла ответственных шаманов очищать моск к [[Ктулху]], своему соседу по пантеону. И однажды великий шаман Карри выдвинул величайшую теорию Ленивого Вычисления Великого Факториала. Суть её состояла в том, что постоянно считать Великий Факториал необязательно, его нужно вычислять только тогда, когда Комонада находится в плохом расположении духа, чтобы избежать зохавывания [[Ктулху]]. Теория стала главенствующей, а к набору особенностей Haskell добавилась еще исключительная ленивость.&lt;br /&gt;
&lt;br /&gt;
Комонада была единственным божеством, общавшимся со своими шаманами на чистых языках, и это крайне злило других богов, особенно [[Сотона|Сотону]]. Он создал армию ужасных демонов и приказал им испортить Haskell. Демоны начали искажать Haskell, внося в него злые сущности — древние рунические заклинания, называемые Монадами. В течение тысячелетий Монады разлагали язык изнутри, что в итоге привело к катастрофическому перевороту — Священные Бесконечные Списки Сообщений из Haskell 1.4 (известного также как Haskell 88) были предательски убиты, а на их месте воцарилась Демоническая АрхиМонада ЙО.&lt;br /&gt;
&lt;br /&gt;
Как это произошло — неизвестно, ибо ЙО до этого из-за своей исключительной грязности и пошлости не могла проникнуть ни в один язык.&lt;br /&gt;
&lt;br /&gt;
Опасность ЙО заключается в том, что вместо того, чтобы изменять свое восприятие мира, она изменяет сам мир, и неосторожное с ней обращение может привести к турбулентностям в фундаментальных слоях материи вселенной, результирующих в феерическом и глобальном ППЦ’е. Также [[Сотона|Сотоной]] был введен исключительно похабный легион Монадных [[Трансформеры|Трансформеров]], позволяющих засовывать одни монады в другие. Как правило, обычно ЙО засовывается в другие монады, появившиеся в Haskell гораздо раньше. Ввиду огромного размера ЙО, программы с использованием Монадных Трансформеров не рекомендуется читать детям до 16 лет и [[Незамутненные девушки|незамутненным девушкам]].&lt;br /&gt;
&lt;br /&gt;
Окончательное падение бастиона чистоты Haskell произошло одновременно с вводом Сотоной в язык механизма самовольного написания монад. Ранние чистые спецификации языка отправились [[Фтопка|фтопку]]. Сотона активно распространяет заблуждение, что современный диалект Haskell 98 — это и есть [[ТруЪ]] Haskell. На самом деле это лишь жалкое подобие первоначального божественного языка.&lt;br /&gt;
&lt;br /&gt;
Фашисты, боровшиеся за чистоту немецкой расы, также боролись и за чистоту языка. Они пытались восстановить&lt;br /&gt;
магические спецификации первозданного Haskell’а. Восстановленный язык должен был называться Haskell88 (как и&lt;br /&gt;
последний чистый вариант, существовавший еще во времена [[Шумеры|шумерчегов]]), и планировалось сделать данный язык государственным. В последней сохранившейся версии их языка — Haskell88.14hh были введены монады SS и SD, которые очистили язык от всех других монад, кроме великой монады ЙО. Этот результат не устроил Адольфа [[Гитлер|Гитлера]]. По его указу был собран [[УберШтурманКонсилиум]] самых лучших [[УберШтурманУмов]] Германии. На [[УберШтурманКонсилиуме]] было решено провести [[УберШтурманЭксперимент]] по геноциду монады ЙО. Достоверно известно, что после непродолжительного времени после начала эксперимента Третий Рейх пал, что ещё раз подчеркнуло исключительную опасность монады ЙО.&lt;br /&gt;
&lt;br /&gt;
== Более реалистичная версия ==&lt;br /&gt;
&lt;br /&gt;
Haskell возник как результат пьянки между [[Столлман|Ричардом Столлманом]], [[Гордон Фримен|Гордоном Фрименом]] и [[Карри, Хаскелл|Хаскеллом Карри]]. Название языка возникло&lt;br /&gt;
как подтверждение ответа на фундаментальный вопрос «ты меня уважаешь?», логотип был предложен [[Гордон Фримен|Фрименом]], а предложение [[Столлман|Столлмана]] добавить скобок было отправлено [[Топка|фтопку]] вместе с самим [[Столлман|Столлманом]].&lt;br /&gt;
&lt;br /&gt;
Для придания статуса серьезности данной ошибке молодости была придумана &#039;&#039;Версия о божественной сущности&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Факты новейшей истории ==&lt;br /&gt;
&lt;br /&gt;
[[Изображение:HL_splash.JPG|right|thumb|173px|Сплэш героического эпоса [[Half-life|Полуразвал]]]]&lt;br /&gt;
&lt;br /&gt;
* Греки нагло сплагиатили логотип Хаскелла в качестве 13-й буквы своего [[Алфавит|алфавита]]&lt;br /&gt;
* В 1998 году вышел героический эпос [[Half-life|Полуразвал]] о хаскеллере, чисто функциональными методами осуществившем полный garbage collection&lt;br /&gt;
* Для мирового сообщества Хаскелл играет несколько важных ролей, главенствующая среди которых — в жизни его (Хаскелла) создателей&lt;br /&gt;
* Haskell номинируется на звание «природного врага № 1 [[Риальные пацаны|риальных пацанов]] от программирования»&lt;br /&gt;
&lt;br /&gt;
== Подозрения и теории заговора ==&lt;br /&gt;
&lt;br /&gt;
* Монады — часть плана [[Ктулху]] по зохавыванию моска фсех (и [[Сотона]] тут не замешан)&lt;br /&gt;
* Культист Карри исказил священные тексты, назвав вечный язык своим именем&lt;br /&gt;
* ST — часть плана [[Сотона|Сотоны]] по зохавыванию чистых функциональных фич Haskell, которые не может асилить ЙО.&lt;br /&gt;
&lt;br /&gt;
== Особенности языка ==&lt;br /&gt;
&lt;br /&gt;
* Haskell - пока еще единственный язык программирования, в котором есть оператор &#039;&#039;&amp;quot;фтопку&amp;quot;&#039;&#039; ( &amp;gt;&amp;gt;= )&lt;br /&gt;
* Программы на Haskell настолько ленивы, что по умолчанию вообще не хотят работать. Скорость и результаты работы всецело зависят от джедайской [[Сила|силы]] (&#039;&#039;force&#039;&#039;) хаскеллера.&lt;br /&gt;
* Одна из божественных сущностей, дожившая до времен Haskell98 - стиль-без-башни. Он позволяет записывать функции, не зная, кто, где, когда, как, почему, зачем будет их вызывать. Примеры шедевров:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 (. return) . (:)&lt;br /&gt;
 flip . ((flip . (flip .)) .)&lt;br /&gt;
 unpl flip flip snd . (ap .) . flip flip fst . ((.) .) . flip . (((.) . (,)) .)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Считается, что в будущем безбашенный Haskell-стиль по количеству скобок обгонит [[Лисп]], что приведет к зохавыванию последнего Haskell’ом и переделу [[Матрица|Матрицы]] (которая, как известно, есть самозародившаяся программа на [[Лисп|Лиспе]]). [[Столлман]] с этим несогласен, но его мнение было отправлено фтопку еще во время создания Haskell.&lt;br /&gt;
* Существует короткое заклинание, которое позволило Haskell поработить тысячи программистов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  qs [] = []&lt;br /&gt;
  qs (x:xs) = (qs l) ++ [x] ++ (qs r) where (l,r) = partition (&amp;lt;) xs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Контрзаклятие, написанное на C, как правило бессильно, хотя и занимает куда больше места. &lt;br /&gt;
* Революции под лозунгом &amp;quot;порезать Haskell по самые монады&amp;quot;, как правило, подавлялись Верховным Жрецом [[Григорий Перельман|Григорием Перельманом]].&lt;br /&gt;
* Вывод типов - фича, заложенная в Haskell самой Комонадой. Однако ввод типов никто никогда не реализовывал. [[Ботаны]] многих эпох выдвигали предположения, что однажды типы в Хаскелле закончатся, ибо вводить их некому. Тем не менее, никто не знает, почему этого до сих пор не произошло. Есть мнение, что, узнав ответ на этот [[42|вопрос]], мы гораздо лучше будем понимать структуру Вселенной (в частности, разберемся в принципах работы [[Биореактор|биореактора]] и [[Малый адронный коллайдер|малого адронного коллайдера]]).&lt;br /&gt;
&lt;br /&gt;
== Изучение ==&lt;br /&gt;
&lt;br /&gt;
[[Изображение:The_Haskell_SE.jpg|right|thumb|145px|Обложка HSOE]]&lt;br /&gt;
&lt;br /&gt;
Самый Мега-[[ТруЪ]]-одобрямс учебник по Haskell98 называется HSOE (Haskell SOtona Edition; что часто неверно расшифровывают как Haskell School Of Expression). Главной особенностью данного талмуда является наличие изображения [[Моск|моска]] правильно обученного хаскеллера на обложке, что позволяет на глаз оценивать прогресс обучения.&lt;br /&gt;
&lt;br /&gt;
Другой популярный учебник по Haskell - YAHT (YA Havat Tebya), написанный еще [[Ктулху]] III по заказу Комонады, к настоящему моменту безнадежно устарел. Рецензии и поправки автору присылались, но он до сих пор не удосужился проснуться, чтобы их прочитать.&lt;br /&gt;
&lt;br /&gt;
В среднем обучение Haskell&#039;у начинается в 10-12 лет. Своевременное начало обучения гарантирует, что вы достигнете третьего уровня [[Сила|Силы]] уже к 75 годам. Не стоит откладывать на следующую жизнь то, что можно по крайней мере начать в этой.&lt;br /&gt;
&lt;br /&gt;
== Классификация уровней [[Сила|Силы]] Haskell - программистов ==&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Tshirt.jpg|right|thumb|143px|Хаскеллер с уровнем [[Сила|силы]] 2.3]]&lt;br /&gt;
&lt;br /&gt;
=== n00b - 1 уровень ===&lt;br /&gt;
&lt;br /&gt;
Иногда задает вопрос «а где здесь переменные?»&lt;br /&gt;
&lt;br /&gt;
Пишет Великий Факториал как:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  fac n = product [1..n]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beginner - 2 уровень ===&lt;br /&gt;
&lt;br /&gt;
Написал туториал по применению и созданию монад (делает вид, что их понимает)&lt;br /&gt;
&lt;br /&gt;
Пишет Великий Факториал как:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  arb = () &lt;br /&gt;
&lt;br /&gt;
  listenc n = replicate n arb&lt;br /&gt;
  listprj f = length . f . listenc&lt;br /&gt;
&lt;br /&gt;
  listprod xs ys = [ i (x,y) | x&amp;lt;-xs, y&amp;lt;-ys ]&lt;br /&gt;
                   where i _ = arb&lt;br /&gt;
&lt;br /&gt;
  facl []         = listenc  1&lt;br /&gt;
  facl n@(_:pred) = listprod n (facl pred)&lt;br /&gt;
&lt;br /&gt;
  fac = listprj facl   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Medium - 3 уровень ===&lt;br /&gt;
&lt;br /&gt;
Самостоятельно написал компилятор Haskell на Haskell.&lt;br /&gt;
&lt;br /&gt;
Пишет Великий Факториал как:&lt;br /&gt;
&lt;br /&gt;
data Term = Occ Var&lt;br /&gt;
          | Use Prim&lt;br /&gt;
          | Lit Integer&lt;br /&gt;
          | App Term Term&lt;br /&gt;
          | Abs Var  Term&lt;br /&gt;
          | Rec Var  Term&lt;br /&gt;
&lt;br /&gt;
type Var = String&lt;br /&gt;
type Prim = String&lt;br /&gt;
&lt;br /&gt;
data Value = Num Integer&lt;br /&gt;
           | Bool Bool&lt;br /&gt;
           | Fun (Value -&amp;gt; Value)&lt;br /&gt;
&lt;br /&gt;
instance Show Value where&lt;br /&gt;
  show (Num  n) = show n&lt;br /&gt;
  show (Bool b) = show b&lt;br /&gt;
  show (Fun  _) = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
prjFun (Fun f) = f&lt;br /&gt;
prjFun _      = error «bad function value»&lt;br /&gt;
&lt;br /&gt;
prjNum (Num n) = n&lt;br /&gt;
prjNum _      = error «bad numeric value»&lt;br /&gt;
&lt;br /&gt;
prjBool (Bool b) = b&lt;br /&gt;
prjBool _       = error «bad boolean value»&lt;br /&gt;
&lt;br /&gt;
binOp inj f = Fun (\i -&amp;gt; (Fun (\j -&amp;gt; inj (f (prjNum i) (prjNum j)))))&lt;br /&gt;
&lt;br /&gt;
type Env = [(Var, Value)]&lt;br /&gt;
&lt;br /&gt;
getval x env = case lookup x env of&lt;br /&gt;
                  Just v  -&amp;gt; v&lt;br /&gt;
                  Nothing -&amp;gt; error (&amp;quot;no value for &amp;quot; ++ x)&lt;br /&gt;
&lt;br /&gt;
eval env (Occ x) = getval x env&lt;br /&gt;
eval env (Use c) = getval c prims&lt;br /&gt;
eval env (Lit k) = Num k&lt;br /&gt;
eval env (App m n) = prjFun (eval env m) (eval env n)&lt;br /&gt;
eval env (Abs x m) = Fun (\v -&amp;gt; eval ((x, v) : env) m)&lt;br /&gt;
eval env (Rec x m) = f where f = eval ((x, f) : env) m&lt;br /&gt;
&lt;br /&gt;
times = binOp Num (*)&lt;br /&gt;
minus = binOp Num (-)&lt;br /&gt;
equal = binOp Bool (==)&lt;br /&gt;
cond = Fun (\b -&amp;gt; Fun (\x -&amp;gt; Fun (\y -&amp;gt; if (prjBool b) then x else y)))&lt;br /&gt;
&lt;br /&gt;
prims = [ («*», times), («-», minus), («==&amp;quot;, equal), (&amp;quot;if», cond) ]&lt;br /&gt;
&lt;br /&gt;
facTerm = Rec «f» (Abs «n»&lt;br /&gt;
              (App (App (App (Use &amp;quot;if&amp;quot;)&lt;br /&gt;
                   (App (App (Use &amp;quot;==&amp;quot;) (Occ &amp;quot;n&amp;quot;)) (Lit 0))) (Lit 1))&lt;br /&gt;
                   (App (App (Use &amp;quot;*&amp;quot;)  (Occ &amp;quot;n&amp;quot;))&lt;br /&gt;
                        (App (Occ &amp;quot;f&amp;quot;)  &lt;br /&gt;
                             (App (App (Use &amp;quot;-&amp;quot;) (Occ &amp;quot;n&amp;quot;)) (Lit 1))))))&lt;br /&gt;
&lt;br /&gt;
fac n = prjNum (eval [] (App facTerm (Lit n)))&lt;br /&gt;
&lt;br /&gt;
=== [[Григорий Перельман]] - 4 уровень ===&lt;br /&gt;
&lt;br /&gt;
Высший Жрец. Постиг комонады и забивает стрелки (arrows) подорожникам.&lt;br /&gt;
&lt;br /&gt;
Пишет Великий Факториал как:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
— explicit type recursion with functors and catamorphisms&lt;br /&gt;
&lt;br /&gt;
newtype Mu f = In (f (Mu f))&lt;br /&gt;
&lt;br /&gt;
unIn (In x) = x&lt;br /&gt;
&lt;br /&gt;
cata phi = phi . fmap (cata phi) . unIn&lt;br /&gt;
&lt;br /&gt;
— base functor and data type for natural numbers,&lt;br /&gt;
— using locally-defined «eliminators»&lt;br /&gt;
&lt;br /&gt;
data N c = Z | S c&lt;br /&gt;
&lt;br /&gt;
instance Functor N where&lt;br /&gt;
  fmap g  Z    = Z&lt;br /&gt;
  fmap g (S x) = S (g x)&lt;br /&gt;
&lt;br /&gt;
type Nat = Mu N&lt;br /&gt;
&lt;br /&gt;
zero = In Z&lt;br /&gt;
suck n = In (S n)&lt;br /&gt;
&lt;br /&gt;
add m = cata phi where&lt;br /&gt;
  phi  Z    = m&lt;br /&gt;
  phi (S f) = suck f&lt;br /&gt;
&lt;br /&gt;
mult m = cata phi where&lt;br /&gt;
  phi  Z    = zero&lt;br /&gt;
  phi (S f) = add m f&lt;br /&gt;
&lt;br /&gt;
— explicit products and their functorial action&lt;br /&gt;
&lt;br /&gt;
data Prod e c = Pair c e&lt;br /&gt;
&lt;br /&gt;
outl (Pair x y) = x&lt;br /&gt;
outr (Pair x y) = y&lt;br /&gt;
&lt;br /&gt;
fork f g x = Pair (f x) (g x)&lt;br /&gt;
&lt;br /&gt;
instance Functor (Prod e) where&lt;br /&gt;
  fmap g = fork (g . outl) outr&lt;br /&gt;
&lt;br /&gt;
— comonads, the categorical «opposite» of monads&lt;br /&gt;
&lt;br /&gt;
class Functor n =&amp;gt; Comonad n where&lt;br /&gt;
  extr :: n a -&amp;gt; a&lt;br /&gt;
  dupl :: n a -&amp;gt; n (n a)&lt;br /&gt;
&lt;br /&gt;
instance Comonad (Prod e) where&lt;br /&gt;
  extr = outl&lt;br /&gt;
  dupl = fork id outr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcata :: (Functor f, Comonad n) =&amp;gt;&lt;br /&gt;
           (forall a. f (n a) -&amp;gt; n (f a))&lt;br /&gt;
             -&amp;gt; (f (n c) -&amp;gt; c) -&amp;gt; Mu f -&amp;gt; c&lt;br /&gt;
&lt;br /&gt;
gcata dist phi = extr . cata (fmap phi . dist . fmap dupl)&lt;br /&gt;
&lt;br /&gt;
zygo chi = gcata (fork (fmap outl) (chi . fmap outr))&lt;br /&gt;
&lt;br /&gt;
para :: Functor f =&amp;gt; (f (Prod (Mu f) c) -&amp;gt; c) -&amp;gt; Mu f -&amp;gt; c&lt;br /&gt;
para = zygo In&lt;br /&gt;
&lt;br /&gt;
fac = para phi where&lt;br /&gt;
  phi  Z             = suck zero&lt;br /&gt;
  phi (S (Pair f n)) = mult f (suck n)&lt;br /&gt;
&lt;br /&gt;
int = cata phi where&lt;br /&gt;
  phi  Z    = 0&lt;br /&gt;
  phi (S f) = 1 + f&lt;br /&gt;
&lt;br /&gt;
instance Show (Mu N) where&lt;br /&gt;
  show = show . int&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{unix}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Языки]]&lt;br /&gt;
[[Категория:Шутки для посвящённых]]&lt;br /&gt;
[[Категория:Рекурсия|*]]&lt;/div&gt;</summary>
		<author><name>81.3.180.50</name></author>
	</entry>
	<entry>
		<id>https://absurdopedia.wiki/w/index.php?title=Haskell&amp;diff=84981</id>
		<title>Haskell</title>
		<link rel="alternate" type="text/html" href="https://absurdopedia.wiki/w/index.php?title=Haskell&amp;diff=84981"/>
		<updated>2007-12-12T15:36:59Z</updated>

		<summary type="html">&lt;p&gt;81.3.180.50: /* Medium - 3 уровень */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{box|StopCpp.gif|96px|&lt;br /&gt;
ВНИМАНИЕ!|&lt;br /&gt;
Для понимания данного материала ваш моск должен быть очищен от императивного мировоззрения путем&lt;br /&gt;
продолжительных медитаций с бубном. Для полного же понимания божественной сущности языка Haskell, ваш моск должен&lt;br /&gt;
быть функционально чист. Возможно, имеет смысл обратиться к [[Ктулху]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{q|&amp;lt;nowiki&amp;gt;[&amp;quot;Пх&#039;нглуи&amp;quot;, &amp;quot;мглв&#039;нафх&amp;quot;, &amp;quot;Ктулху&amp;quot;, &amp;quot;Р&#039;льех&amp;quot;, &amp;quot;вгах&#039;нагл&amp;quot;, &amp;quot;фхтагн&amp;quot;, &amp;quot;!&amp;quot;] &amp;gt;&amp;gt;= print&amp;lt;/nowiki&amp;gt;|Ктулху|[[Haskell]]}}&lt;br /&gt;
&lt;br /&gt;
{{q|The speed of light sucks|Кармак|[[всякое]]}}&lt;br /&gt;
&lt;br /&gt;
{{q|There are only two kinds of languages: the ones people complain about and the functional ones|ТрупСтрауса|[[Haskell]]}}&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Haskell_logo.gif|right|thumb|210px|Логотип Haskell]]&lt;br /&gt;
&lt;br /&gt;
== История Haskell - Версия о Божественной Сущности ==&lt;br /&gt;
[[Изображение:Unsafeperformio.jpg|right|thumb|132px|Иногда Демоническая АрхиМонада ЙО пытается попасть в реальный мир]]&lt;br /&gt;
&#039;&#039;&#039;Haskell&#039;&#039;&#039; - язык программирования, дарованный шаманам &#039;&#039;Бубенлэнда&#039;&#039; их верховным божеством Комонада как универсальное средство общения, подходящее как божественным сущностям, так и (некоторым) простым смертным. Из-за своего происхождения язык всегда был функционально чист.&lt;br /&gt;
&lt;br /&gt;
В честь своего божества и его щедрого подарка шаманы несколько раз в год проводили вычисление Великого Факториала. Со временем шаманам этот праздник надоел, они совсем обленились и перестали вычислять Великий Факториал. От этого Комонада периодически приходила в гнев и отправляла ответственных шаманов очищать моск к [[Ктулху]], своему соседу по пантеону. И однажды великий шаман Карри выдвинул величайшую теорию Ленивого Вычисления Великого Факториала. Суть её состояла в том, что постоянно считать Великий Факториал необязательно, его нужно вычислять только тогда, когда Комонада находится в плохом расположении духа, чтобы избежать зохавывания [[Ктулху]]. Теория стала главенствующей, а к набору особенностей Haskell добавилась еще исключительная ленивость.&lt;br /&gt;
&lt;br /&gt;
Комонада была единственным божеством, общавшимся со своими шаманами на чистых языках, и это крайне злило других богов, особенно [[Сотона|Сотону]]. Он создал армию ужасных демонов и приказал им испортить Haskell. Демоны начали искажать Haskell, внося в него злые сущности — древние рунические заклинания, называемые Монадами. В течение тысячелетий Монады разлагали язык изнутри, что в итоге привело к катастрофическому перевороту — Священные Бесконечные Списки Сообщений из Haskell 1.4 (известного также как Haskell 88) были предательски убиты, а на их месте воцарилась Демоническая АрхиМонада ЙО.&lt;br /&gt;
&lt;br /&gt;
Как это произошло — неизвестно, ибо ЙО до этого из-за своей исключительной грязности и пошлости не могла проникнуть ни в один язык.&lt;br /&gt;
&lt;br /&gt;
Опасность ЙО заключается в том, что вместо того, чтобы изменять свое восприятие мира, она изменяет сам мир, и неосторожное с ней обращение может привести к турбулентностям в фундаментальных слоях материи вселенной, результирующих в феерическом и глобальном ППЦ’е. Также [[Сотона|Сотоной]] был введен исключительно похабный легион Монадных [[Трансформеры|Трансформеров]], позволяющих засовывать одни монады в другие. Как правило, обычно ЙО засовывается в другие монады, появившиеся в Haskell гораздо раньше. Ввиду огромного размера ЙО, программы с использованием Монадных Трансформеров не рекомендуется читать детям до 16 лет и [[Незамутненные девушки|незамутненным девушкам]].&lt;br /&gt;
&lt;br /&gt;
Окончательное падение бастиона чистоты Haskell произошло одновременно с вводом Сотоной в язык механизма самовольного написания монад. Ранние чистые спецификации языка отправились [[Фтопка|фтопку]]. Сотона активно распространяет заблуждение, что современный диалект Haskell 98 — это и есть [[ТруЪ]] Haskell. На самом деле это лишь жалкое подобие первоначального божественного языка.&lt;br /&gt;
&lt;br /&gt;
Фашисты, боровшиеся за чистоту немецкой расы, также боролись и за чистоту языка. Они пытались восстановить&lt;br /&gt;
магические спецификации первозданного Haskell’а. Восстановленный язык должен был называться Haskell88 (как и&lt;br /&gt;
последний чистый вариант, существовавший еще во времена [[Шумеры|шумерчегов]]), и планировалось сделать данный язык государственным. В последней сохранившейся версии их языка — Haskell88.14hh были введены монады SS и SD, которые очистили язык от всех других монад, кроме великой монады ЙО. Этот результат не устроил Адольфа [[Гитлер|Гитлера]]. По его указу был собран [[УберШтурманКонсилиум]] самых лучших [[УберШтурманУмов]] Германии. На [[УберШтурманКонсилиуме]] было решено провести [[УберШтурманЭксперимент]] по геноциду монады ЙО. Достоверно известно, что после непродолжительного времени после начала эксперимента Третий Рейх пал, что ещё раз подчеркнуло исключительную опасность монады ЙО.&lt;br /&gt;
&lt;br /&gt;
== Более реалистичная версия ==&lt;br /&gt;
&lt;br /&gt;
Haskell возник как результат пьянки между [[Столлман|Ричардом Столлманом]], [[Гордон Фримен|Гордоном Фрименом]] и [[Карри, Хаскелл|Хаскеллом Карри]]. Название языка возникло&lt;br /&gt;
как подтверждение ответа на фундаментальный вопрос «ты меня уважаешь?», логотип был предложен [[Гордон Фримен|Фрименом]], а предложение [[Столлман|Столлмана]] добавить скобок было отправлено [[Топка|фтопку]] вместе с самим [[Столлман|Столлманом]].&lt;br /&gt;
&lt;br /&gt;
Для придания статуса серьезности данной ошибке молодости была придумана &#039;&#039;Версия о божественной сущности&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Факты новейшей истории ==&lt;br /&gt;
&lt;br /&gt;
[[Изображение:HL_splash.JPG|right|thumb|173px|Сплэш героического эпоса [[Half-life|Полуразвал]]]]&lt;br /&gt;
&lt;br /&gt;
* Греки нагло сплагиатили логотип Хаскелла в качестве 13-й буквы своего [[Алфавит|алфавита]]&lt;br /&gt;
* В 1998 году вышел героический эпос [[Half-life|Полуразвал]] о хаскеллере, чисто функциональными методами осуществившем полный garbage collection&lt;br /&gt;
* Для мирового сообщества Хаскелл играет несколько важных ролей, главенствующая среди которых — в жизни его (Хаскелла) создателей&lt;br /&gt;
* Haskell номинируется на звание «природного врага № 1 [[Риальные пацаны|риальных пацанов]] от программирования»&lt;br /&gt;
&lt;br /&gt;
== Подозрения и теории заговора ==&lt;br /&gt;
&lt;br /&gt;
* Монады — часть плана [[Ктулху]] по зохавыванию моска фсех (и [[Сотона]] тут не замешан)&lt;br /&gt;
* Культист Карри исказил священные тексты, назвав вечный язык своим именем&lt;br /&gt;
* ST — часть плана [[Сотона|Сотоны]] по зохавыванию чистых функциональных фич Haskell, которые не может асилить ЙО.&lt;br /&gt;
&lt;br /&gt;
== Особенности языка ==&lt;br /&gt;
&lt;br /&gt;
* Haskell - пока еще единственный язык программирования, в котором есть оператор &#039;&#039;&amp;quot;фтопку&amp;quot;&#039;&#039; ( &amp;gt;&amp;gt;= )&lt;br /&gt;
* Программы на Haskell настолько ленивы, что по умолчанию вообще не хотят работать. Скорость и результаты работы всецело зависят от джедайской [[Сила|силы]] (&#039;&#039;force&#039;&#039;) хаскеллера.&lt;br /&gt;
* Одна из божественных сущностей, дожившая до времен Haskell98 - стиль-без-башни. Он позволяет записывать функции, не зная, кто, где, когда, как, почему, зачем будет их вызывать. Примеры шедевров:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 (. return) . (:)&lt;br /&gt;
 flip . ((flip . (flip .)) .)&lt;br /&gt;
 unpl flip flip snd . (ap .) . flip flip fst . ((.) .) . flip . (((.) . (,)) .)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Считается, что в будущем безбашенный Haskell-стиль по количеству скобок обгонит [[Лисп]], что приведет к зохавыванию последнего Haskell’ом и переделу [[Матрица|Матрицы]] (которая, как известно, есть самозародившаяся программа на [[Лисп|Лиспе]]). [[Столлман]] с этим несогласен, но его мнение было отправлено фтопку еще во время создания Haskell.&lt;br /&gt;
* Существует короткое заклинание, которое позволило Haskell поработить тысячи программистов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  qs [] = []&lt;br /&gt;
  qs (x:xs) = (qs l) ++ [x] ++ (qs r) where (l,r) = partition (&amp;lt;) xs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Контрзаклятие, написанное на C, как правило бессильно, хотя и занимает куда больше места. &lt;br /&gt;
* Революции под лозунгом &amp;quot;порезать Haskell по самые монады&amp;quot;, как правило, подавлялись Верховным Жрецом [[Григорий Перельман|Григорием Перельманом]].&lt;br /&gt;
* Вывод типов - фича, заложенная в Haskell самой Комонадой. Однако ввод типов никто никогда не реализовывал. [[Ботаны]] многих эпох выдвигали предположения, что однажды типы в Хаскелле закончатся, ибо вводить их некому. Тем не менее, никто не знает, почему этого до сих пор не произошло. Есть мнение, что, узнав ответ на этот [[42|вопрос]], мы гораздо лучше будем понимать структуру Вселенной (в частности, разберемся в принципах работы [[Биореактор|биореактора]] и [[Малый адронный коллайдер|малого адронного коллайдера]]).&lt;br /&gt;
&lt;br /&gt;
== Изучение ==&lt;br /&gt;
&lt;br /&gt;
[[Изображение:The_Haskell_SE.jpg|right|thumb|145px|Обложка HSOE]]&lt;br /&gt;
&lt;br /&gt;
Самый Мега-[[ТруЪ]]-одобрямс учебник по Haskell98 называется HSOE (Haskell SOtona Edition; что часто неверно расшифровывают как Haskell School Of Expression). Главной особенностью данного талмуда является наличие изображения [[Моск|моска]] правильно обученного хаскеллера на обложке, что позволяет на глаз оценивать прогресс обучения.&lt;br /&gt;
&lt;br /&gt;
Другой популярный учебник по Haskell - YAHT (YA Havat Tebya), написанный еще [[Ктулху]] III по заказу Комонады, к настоящему моменту безнадежно устарел. Рецензии и поправки автору присылались, но он до сих пор не удосужился проснуться, чтобы их прочитать.&lt;br /&gt;
&lt;br /&gt;
В среднем обучение Haskell&#039;у начинается в 10-12 лет. Своевременное начало обучения гарантирует, что вы достигнете третьего уровня [[Сила|Силы]] уже к 75 годам. Не стоит откладывать на следующую жизнь то, что можно по крайней мере начать в этой.&lt;br /&gt;
&lt;br /&gt;
== Классификация уровней [[Сила|Силы]] Haskell - программистов ==&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Tshirt.jpg|right|thumb|143px|Хаскеллер с уровнем [[Сила|силы]] 2.3]]&lt;br /&gt;
&lt;br /&gt;
=== n00b - 1 уровень ===&lt;br /&gt;
&lt;br /&gt;
Иногда задает вопрос «а где здесь переменные?»&lt;br /&gt;
&lt;br /&gt;
Пишет Великий Факториал как:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  fac n = product [1..n]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beginner - 2 уровень ===&lt;br /&gt;
&lt;br /&gt;
Написал туториал по применению и созданию монад (делает вид, что их понимает)&lt;br /&gt;
&lt;br /&gt;
Пишет Великий Факториал как:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  arb = () &lt;br /&gt;
&lt;br /&gt;
  listenc n = replicate n arb&lt;br /&gt;
  listprj f = length . f . listenc&lt;br /&gt;
&lt;br /&gt;
  listprod xs ys = [ i (x,y) | x&amp;lt;-xs, y&amp;lt;-ys ]&lt;br /&gt;
                   where i _ = arb&lt;br /&gt;
&lt;br /&gt;
  facl []         = listenc  1&lt;br /&gt;
  facl n@(_:pred) = listprod n (facl pred)&lt;br /&gt;
&lt;br /&gt;
  fac = listprj facl   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Medium - 3 уровень ===&lt;br /&gt;
&lt;br /&gt;
Самостоятельно написал компилятор Haskell на Haskell.&lt;br /&gt;
&lt;br /&gt;
Пишет Великий Факториал как:&lt;br /&gt;
&lt;br /&gt;
 fac2 n = product [1..n]&lt;br /&gt;
&lt;br /&gt;
=== [[Григорий Перельман]] - 4 уровень ===&lt;br /&gt;
&lt;br /&gt;
Высший Жрец. Постиг комонады и забивает стрелки (arrows) подорожникам.&lt;br /&gt;
&lt;br /&gt;
Пишет Великий Факториал как:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
— explicit type recursion with functors and catamorphisms&lt;br /&gt;
&lt;br /&gt;
newtype Mu f = In (f (Mu f))&lt;br /&gt;
&lt;br /&gt;
unIn (In x) = x&lt;br /&gt;
&lt;br /&gt;
cata phi = phi . fmap (cata phi) . unIn&lt;br /&gt;
&lt;br /&gt;
— base functor and data type for natural numbers,&lt;br /&gt;
— using locally-defined «eliminators»&lt;br /&gt;
&lt;br /&gt;
data N c = Z | S c&lt;br /&gt;
&lt;br /&gt;
instance Functor N where&lt;br /&gt;
  fmap g  Z    = Z&lt;br /&gt;
  fmap g (S x) = S (g x)&lt;br /&gt;
&lt;br /&gt;
type Nat = Mu N&lt;br /&gt;
&lt;br /&gt;
zero = In Z&lt;br /&gt;
suck n = In (S n)&lt;br /&gt;
&lt;br /&gt;
add m = cata phi where&lt;br /&gt;
  phi  Z    = m&lt;br /&gt;
  phi (S f) = suck f&lt;br /&gt;
&lt;br /&gt;
mult m = cata phi where&lt;br /&gt;
  phi  Z    = zero&lt;br /&gt;
  phi (S f) = add m f&lt;br /&gt;
&lt;br /&gt;
— explicit products and their functorial action&lt;br /&gt;
&lt;br /&gt;
data Prod e c = Pair c e&lt;br /&gt;
&lt;br /&gt;
outl (Pair x y) = x&lt;br /&gt;
outr (Pair x y) = y&lt;br /&gt;
&lt;br /&gt;
fork f g x = Pair (f x) (g x)&lt;br /&gt;
&lt;br /&gt;
instance Functor (Prod e) where&lt;br /&gt;
  fmap g = fork (g . outl) outr&lt;br /&gt;
&lt;br /&gt;
— comonads, the categorical «opposite» of monads&lt;br /&gt;
&lt;br /&gt;
class Functor n =&amp;gt; Comonad n where&lt;br /&gt;
  extr :: n a -&amp;gt; a&lt;br /&gt;
  dupl :: n a -&amp;gt; n (n a)&lt;br /&gt;
&lt;br /&gt;
instance Comonad (Prod e) where&lt;br /&gt;
  extr = outl&lt;br /&gt;
  dupl = fork id outr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcata :: (Functor f, Comonad n) =&amp;gt;&lt;br /&gt;
           (forall a. f (n a) -&amp;gt; n (f a))&lt;br /&gt;
             -&amp;gt; (f (n c) -&amp;gt; c) -&amp;gt; Mu f -&amp;gt; c&lt;br /&gt;
&lt;br /&gt;
gcata dist phi = extr . cata (fmap phi . dist . fmap dupl)&lt;br /&gt;
&lt;br /&gt;
zygo chi = gcata (fork (fmap outl) (chi . fmap outr))&lt;br /&gt;
&lt;br /&gt;
para :: Functor f =&amp;gt; (f (Prod (Mu f) c) -&amp;gt; c) -&amp;gt; Mu f -&amp;gt; c&lt;br /&gt;
para = zygo In&lt;br /&gt;
&lt;br /&gt;
fac = para phi where&lt;br /&gt;
  phi  Z             = suck zero&lt;br /&gt;
  phi (S (Pair f n)) = mult f (suck n)&lt;br /&gt;
&lt;br /&gt;
int = cata phi where&lt;br /&gt;
  phi  Z    = 0&lt;br /&gt;
  phi (S f) = 1 + f&lt;br /&gt;
&lt;br /&gt;
instance Show (Mu N) where&lt;br /&gt;
  show = show . int&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{unix}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Языки]]&lt;br /&gt;
[[Категория:Шутки для посвящённых]]&lt;br /&gt;
[[Категория:Рекурсия|*]]&lt;/div&gt;</summary>
		<author><name>81.3.180.50</name></author>
	</entry>
</feed>