Haskell: различия между версиями

Факты новейшей истории: хаскил знать надо.
Mass interwiki fix
 
(не показано 26 промежуточных версий 22 участников)
Строка 1: Строка 1:
{{ambox|image=[[image:StopCpp.gif|50px]]|
{{ambox|image=[[image:StopCpp.gif|50px]]|
text='''ВНИМАНИЕ!'''|
text='''ВНИМАНИЕ!'''|
text-small=Для понимания данного материала ваш моск должен быть очищен от императивного мировоззрения путем
text-small=Для понимания данного материала ваш моск должен быть очищен от императивного мировоззрения путем продолжительных медитаций с бубном. Для полного же понимания божественной сущности языка Haskell, ваш моск должен быть функционально чист и не иметь побочных эффектов. Возможно, имеет смысл обратиться к [[Ктулху]].
продолжительных медитаций с бубном. Для полного же понимания божественной сущности языка Haskell, ваш моск должен
быть функционально чист. Возможно, имеет смысл обратиться к [[Ктулху]].
}}
}}
{{wikipedia}}
{{wikipedia}}
{{q|<nowiki>["Пх'нглуи", "мглв'нафх", "Ктулху", "Р'льех", "вгах'нагл", "фхтагн", "!"] >>= print</nowiki>|Ктулху|[[Haskell]]}}
{{q|<nowiki>sequence_ $ ["Пх'нглуи", "мглв'нафх", "Ктулху", "Р'льех", "вгах'нагл", "фхтагн", "!"] >>= (\x -> [print x])</nowiki>|Ктулху|Haskell}}


{{q|The speed of light sucks|Кармак|[[всякое]]}}
{{q|The speed of light sucks|Кармак|[[всякое]]}}


{{q|There are only two kinds of languages: the ones people complain about and the functional ones|ТрупСтрауса|[[Haskell]]}}
{{q|There are only two kinds of languages: the ones people complain about and the functional ones|ТрупСтрауса|Haskell}}


[[Изображение:Haskell_logo.gif|right|thumb|210px|Логотип Haskell]]
[[Файл:Haskell_logo.gif|right|thumb|210px|Логотип Haskell]]


== История Haskell - Версия о Божественной Сущности ==
== История Haskell — Версия о Божественной Сущности ==
[[Изображение:Unsafeperformio.jpg|right|thumb|132px|Иногда Демоническая АрхиМонада ЙО пытается попасть в реальный мир]]
[[Файл:Unsafeperformio.jpg|right|thumb|132px|Иногда Демоническая АрхиМонада ЙО пытается попасть в реальный мир]]
'''Haskell''' - язык программирования, дарованный шаманам ''Бубенлэнда'' их верховным божеством Комонада как универсальное средство общения, подходящее как божественным сущностям, так и (некоторым) простым смертным. Из-за своего происхождения язык всегда был функционально чист.
'''Haskell''' — священный язык программирования, дарованный шаманам ''Бубенлэнда'' их верховным божеством Комонада как универсальное средство для общения и духовного очищения, подходящее как божественным сущностям, так и (некоторым) простым смертным, переболевшим тяжелыми стадиями [[интеллект]]а. Из-за своего происхождения язык всегда был функционально чист.


В честь своего божества и его щедрого подарка шаманы несколько раз в год проводили вычисление Великого Факториала. Со временем шаманам этот праздник надоел, они совсем обленились и перестали вычислять Великий Факториал. От этого Комонада периодически приходила в гнев и отправляла ответственных шаманов очищать моск к [[Ктулху]], своему соседу по пантеону. И однажды великий шаман Карри выдвинул величайшую теорию Ленивого Вычисления Великого Факториала. Суть её состояла в том, что постоянно считать Великий Факториал необязательно, его нужно вычислять только тогда, когда Комонада находится в плохом расположении духа, чтобы избежать зохавывания [[Ктулху]]. Теория стала главенствующей, а к набору особенностей Haskell добавилась еще исключительная ленивость.
В честь своего божества и его щедрого подарка шаманы несколько раз в год проводили вычисление Великого Факториала. Со временем шаманам этот праздник надоел, они совсем обленились и перестали вычислять Великий Факториал. От этого Комонада периодически приходила в гнев и отправляла ответственных шаманов очищать моск к [[Ктулху]], своему соседу по пантеону. И однажды великий шаман Карри выдвинул величайшую теорию Ленивого Вычисления Великого Факториала. Суть её состояла в том, что постоянно считать Великий Факториал необязательно, его нужно вычислять только тогда, когда Комонада находится в плохом расположении духа, чтобы избежать зохавывания [[Ктулху]]. Теория стала главенствующей, а к набору особенностей Haskell добавилась еще исключительная ленивость.


Комонада была единственным божеством, общавшимся со своими шаманами на чистых языках, и это крайне злило других богов, особенно [[Сотона|Сотону]]. Он создал армию ужасных демонов и приказал им испортить Haskell. Демоны начали искажать Haskell, внося в него злые сущности — древние рунические заклинания, называемые Монадами. В течение тысячелетий Монады разлагали язык изнутри, что в итоге привело к катастрофическому перевороту — Священные Бесконечные Списки Сообщений из Haskell 1.4 (известного также как Haskell 88) были предательски убиты, а на их месте воцарилась Демоническая АрхиМонада ЙО.
Комонада была единственным божеством, общавшимся со своими шаманами на чистых языках, и это крайне злило других богов, особенно [[Сотона|Сотону]]. Он создал армию ужасных демонов и приказал им испортить Haskell. Демоны начали искажать Haskell, внося в него злые сущности — древние рунические заклинания, называемые Монадами. В течение тысячелетий Монады разлагали язык изнутри, что в итоге привело к катастрофическому перевороту — Священные Бесконечные Списки Сообщений из Haskell 1.4 (известного также как Haskell 88) были предательски убиты, а на их месте воцарилась Демоническая АрхиМонада ЙО.


Как это произошло — неизвестно, ибо ЙО до этого из-за своей исключительной грязности и пошлости не могла проникнуть ни в один язык.
Как это произошло — неизвестно, ибо ЙО до этого из-за своей исключительной грязности и пошлости не могла проникнуть ни в один язык.


Опасность ЙО заключается в том, что вместо того, чтобы изменять свое восприятие мира, она изменяет сам мир, и неосторожное с ней обращение может привести к турбулентностям в фундаментальных слоях материи вселенной, результирующих в феерическом и глобальном ППЦ’е. Также [[Сотона|Сотоной]] был введен исключительно похабный легион Монадных [[Трансформеры|Трансформеров]], позволяющих засовывать одни монады в другие. Как правило, обычно ЙО засовывается в другие монады, появившиеся в Haskell гораздо раньше. Ввиду огромного размера ЙО, программы с использованием Монадных Трансформеров не рекомендуется читать детям до 16 лет и [[Незамутненные девушки|незамутненным девушкам]].
Опасность ЙО заключается в том, что вместо того, чтобы изменять свое восприятие мира, она изменяет сам мир, и неосторожное с ней обращение может привести к турбулентностям в фундаментальных слоях материи вселенной, результирующих в феерическом и глобальном ППЦ’е. Также [[Сотона|Сотоной]] был введен исключительно похабный легион Монадных [[Трансформеры|Трансформеров]], позволяющих засовывать одни монады в другие. Как правило, обычно ЙО засовывается в другие монады, появившиеся в Haskell гораздо раньше. Ввиду огромного размера ЙО, программы с использованием Монадных Трансформеров не рекомендуется читать детям до 16 лет и [[Незамутненные девушки|незамутненным девушкам]].


Окончательное падение бастиона чистоты Haskell произошло одновременно с вводом Сотоной в язык механизма самовольного написания монад. Ранние чистые спецификации языка отправились [[Фтопка|фтопку]]. Сотона активно распространяет заблуждение, что современный диалект Haskell 98 — это и есть [[ТруЪ]] Haskell. На самом деле это лишь жалкое подобие первоначального божественного языка.
Окончательное падение бастиона чистоты Haskell произошло одновременно с вводом Сотоной в язык механизма самовольного написания монад. Ранние чистые спецификации языка отправились [[Фтопка|фтопку]]. Сотона активно распространяет заблуждение, что современный диалект Haskell 98 — это и есть [[ТруЪ]] Haskell. На самом деле это лишь жалкое подобие первоначального божественного языка.


Фашисты, боровшиеся за чистоту немецкой расы, также боролись и за чистоту языка. Они пытались восстановить
Фашисты, боровшиеся за чистоту немецкой расы, также боролись и за чистоту языка. Они пытались восстановить
магические спецификации первозданного Haskell’а. Восстановленный язык должен был называться Haskell88 (как и
магические спецификации первозданного Haskell’а. Восстановленный язык должен был называться Haskell88 (как и
последний чистый вариант, существовавший еще во времена [[Шумеры|шумерчегов]]), и планировалось сделать данный язык государственным. В последней сохранившейся версии их языка — Haskell88.14hh были введены монады SS и SD, которые очистили язык от всех других монад, кроме великой монады ЙО. Этот результат не устроил Адольфа [[Гитлер|Гитлера]]. По его указу был собран [[УберШтурманКонсилиум]] самых лучших [[УберШтурманУмов]] Германии. На [[УберШтурманКонсилиуме]] было решено провести [[УберШтурманЭксперимент]] по геноциду монады ЙО. Достоверно известно, что после непродолжительного времени после начала эксперимента Третий Рейх пал, что ещё раз подчеркнуло исключительную опасность монады ЙО.
последний чистый вариант, существовавший еще во времена [[Шумеры|шумерчегов]]), и планировалось сделать данный язык государственным. В последней сохранившейся версии их языка — Haskell88.14hh были введены монады SS и SD, которые очистили язык от всех других монад, кроме великой монады ЙО. Этот результат не устроил Адольфа [[Гитлер]]а. По его указу был собран [[УберШтурманКонсилиум]] самых лучших [[УберШтурманУмов]] Германии. На [[УберШтурманКонсилиуме]] было решено провести [[УберШтурманЭксперимент]] по геноциду монады ЙО. Достоверно известно, что после непродолжительного времени после начала эксперимента Третий Рейх пал, что ещё раз подчеркнуло исключительную опасность монады ЙО.


== Более реалистичная версия ==
== Более реалистичная версия ==


Haskell возник как результат пьянки между [[Столлман|Ричардом Столлманом]], [[Гордон Фримен|Гордоном Фрименом]] и [[Карри, Хаскелл|Хаскеллом Карри]]. Название языка возникло
Haskell возник как результат пьянки между [[Столлман|Ричардом Столлманом]], [[Гордон Фримен|Гордоном Фрименом]] и [[Карри, Хаскелл|Хаскеллом Карри]]. Название языка возникло
как подтверждение ответа на фундаментальный вопрос «ты меня уважаешь?», логотип был предложен [[Гордон Фримен|Фрименом]], а предложение [[Столлман|Столлмана]] добавить скобок было отправлено [[Топка|фтопку]] вместе с самим [[Столлман|Столлманом]].
как подтверждение ответа на фундаментальный вопрос «ты меня уважаешь?», логотип был предложен [[Гордон Фримен|Фрименом]], а предложение [[Столлман]]а добавить скобок было отправлено [[Топка|фтопку]] вместе с самим [[Столлман]]ом.


Для придания статуса серьезности данной ошибке молодости была придумана ''Версия о божественной сущности''.
Для придания статуса серьезности данной ошибке молодости была придумана ''Версия о божественной сущности''.
Строка 41: Строка 39:
== Факты новейшей истории ==
== Факты новейшей истории ==


[[Изображение:HL_splash.JPG|right|thumb|173px|Сплэш героического эпоса [[Half-life|Полуразвал]]]]
[[Файл:HL_splash.JPG|right|thumb|173px|Сплэш героического эпоса [[Half-life|Полуразвал]]]]


* Греки нагло сплагиатили логотип Хаскелла в качестве 13-й буквы своего [[Алфавит|алфавита]]
* Греки нагло сплагиатили логотип Хаскелла в качестве 13-й буквы своего [[алфавит]]а
* В 1998 году вышел героический эпос [[Half-life|Полуразвал]] о хаскеллере, чисто функциональными методами осуществившем полный garbage collection
* В 1998 году вышел героический эпос [[Half-life|Полуразвал]] о хаскеллере, чисто функциональными методами осуществившем полный garbage collection
* Для мирового сообщества Хаскелл играет несколько важных ролей, главенствующая среди которых — в жизни его (Хаскелла) создателей
* Для мирового сообщества Хаскелл играет несколько важных ролей, главенствующая среди которых — в жизни его (Хаскелла) создателей
* Haskell номинируется на звание «природного врага № 1 [[Риальные пацаны|риальных пацанов]] от программирования»
* Haskell номинируется на звание «природного врага № 1 [[Риальные пацаны|риальных пацанов]] от программирования»
* В языке Haskell Вечность (незавершаемая программа) - это разновидность [[Жопа|Жопы (_|_)]], что доказывает его [[Труъ]]-происхождение
* В языке Haskell Вечность (незавершаемая программа) — это разновидность [[Задница|Задницы (_|_)]], что доказывает его [[Труъ]]-происхождение


== Подозрения и теории заговора ==
== Подозрения и теории заговора ==


* Монады — часть плана [[Ктулху]] по зохавыванию моска фсех (и [[Сотона]] тут не замешан)
* Монады — часть плана [[Ктулху]] по зохавыванию моска фсех (и [[Сотона]] тут не замешан)
* Культист Карри исказил священные тексты, назвав вечный язык своим именем
* Культист Карри исказил священные тексты, назвав вечный язык своим именем
* ST — часть плана [[Сотона|Сотоны]] по зохавыванию чистых функциональных фич Haskell, которые не может асилить ЙО.
* ST — часть плана [[Сотона|Сотоны]] по зохавыванию чистых функциональных фич Haskell, которые не может асилить ЙО.


== Особенности языка ==
== Особенности языка ==


* Haskell - пока еще единственный язык программирования, в котором есть оператор ''"фтопку"'' ( >>= )
* Haskell — пока еще единственный язык программирования, в котором есть оператор ''«фтопку»'' (>>=)
* Программы на Haskell настолько ленивы, что по умолчанию вообще не хотят работать. Скорость и результаты работы всецело зависят от джедайской [[Сила|силы]] (''force'') хаскеллера.
* Программы на Haskell настолько ленивы, что по умолчанию вообще не хотят работать. Скорость и результаты работы всецело зависят от джедайской [[Сила|силы]] (''force'') хаскеллера.
* Одна из божественных сущностей, дожившая до времен Haskell98 - стиль-без-башни. Он позволяет записывать функции, не зная, кто, где, когда, как, почему, зачем будет их вызывать. Примеры шедевров:
* Одна из божественных сущностей, дожившая до времен Haskell98 — стиль-без-башни. Он позволяет записывать функции, не зная, кто, где, когда, как, почему, зачем будет их вызывать. Примеры шедевров:


<pre>
<pre>
Строка 67: Строка 65:
</pre>
</pre>


Считается, что в будущем безбашенный Haskell-стиль по количеству скобок обгонит [[Лисп]], что приведет к зохавыванию последнего Haskell’ом и переделу [[Матрица|Матрицы]] (которая, как известно, есть самоpaзродившаяся программа на [[Лисп|Лиспе]]). [[Столлман]] с этим несогласен, но его мнение было отправлено фтопку еще во время создания Haskell.
Считается, что в будущем безбашенный Haskell-стиль по количеству скобок обгонит [[Лисп]], что приведет к зохавыванию последнего Haskell’ом и переделу [[Матрица|Матрицы]] (которая, как известно, есть самоpaзродившаяся программа на [[Лисп]]е). [[Столлман]] с этим несогласен, но его мнение было отправлено фтопку еще во время создания Haskell.
* Существует короткое заклинание, которое позволило Haskell поработить тысячи программистов:
* Существует короткое заклинание, которое позволило Haskell поработить тысячи программистов:


Строка 75: Строка 73:
</pre>
</pre>


Контрзаклятие, написанное на C, как правило бессильно, хотя и занимает куда больше места.  
Контрзаклятие, написанное на C, как правило бессильно, хотя и занимает куда больше места.
* Революции под лозунгом "порезать Haskell по самые монады", как правило, подавлялись Верховным Жрецом [[Григорий Перельман|Григорием Перельманом]].
* Революции под лозунгом «порезать Haskell по самые монады», как правило, подавлялись Верховным Жрецом [[Григорий Перельман|Григорием Перельманом]].
* Вывод типов - фича, заложенная в Haskell самой Комонадой. Однако ввод типов никто никогда не реализовывал. [[Ботаны]] многих эпох выдвигали предположения, что однажды типы в Хаскелле закончатся, ибо вводить их некому. Тем не менее, никто не знает, почему этого до сих пор не произошло. Есть мнение, что, узнав ответ на этот [[42|вопрос]], мы гораздо лучше будем понимать структуру Вселенной (в частности, разберемся в принципах работы [[Биореактор|биореактора]] и [[Малый адронный коллайдер|малого адронного коллайдера]]).
* Вывод типов — фича, заложенная в Haskell самой Комонадой. Однако ввод типов никто никогда не реализовывал. [[Ботаны]] многих эпох выдвигали предположения, что однажды типы в Хаскелле закончатся, ибо вводить их некому. Тем не менее, никто не знает, почему этого до сих пор не произошло. Есть мнение, что, узнав ответ на этот [[42|вопрос]], мы гораздо лучше будем понимать структуру Вселенной (в частности, разберемся в принципах работы [[биореактор]]а и [[Малый адронный коллайдер|малого адронного коллайдера]]).


== Изучение ==
== Изучение ==


[[Изображение:The_Haskell_SE.jpg|right|thumb|145px|Обложка HSOE]]
[[Файл:The_Haskell_SE.jpg|right|thumb|145px|Обложка HSOE]]


Самый Мега-[[ТруЪ]]-одобрямс учебник по Haskell98 называется HSOE (Haskell SOtona Edition; что часто неверно расшифровывают как Haskell School Of Expression). Главной особенностью данного талмуда является наличие изображения [[Моск|моска]] правильно обученного хаскеллера на обложке, что позволяет на глаз оценивать прогресс обучения.
Самый Мега-[[ТруЪ]]-одобрямс учебник по Haskell98 называется HSOE (Haskell SOtona Edition; что часто неверно расшифровывают как Haskell School Of Expression). Главной особенностью данного талмуда является наличие изображения [[моск]]а правильно обученного хаскеллера на обложке, что позволяет на глаз оценивать прогресс обучения.


Другой популярный учебник по Haskell - YAHT (YA Havat Tebya), написанный еще [[Ктулху]] III по заказу Комонады, к настоящему моменту безнадежно устарел. Рецензии и поправки автору присылались, но он до сих пор не удосужился проснуться, чтобы их прочитать.
Другой популярный учебник по Haskell — YAHT (YA Havat Tebya), написанный еще [[Ктулху]] III по заказу Комонады, к настоящему моменту безнадежно устарел. Рецензии и поправки автору присылались, но он до сих пор не удосужился проснуться, чтобы их прочитать.


В среднем обучение Haskell'у начинается в 10-12 лет. Своевременное начало обучения гарантирует, что вы достигнете третьего уровня [[Сила|Силы]] уже к 75 годам. Не стоит откладывать на следующую жизнь то, что можно по крайней мере начать в этой.
В среднем обучение Haskell’у начинается в 10-12 лет. Своевременное начало обучения гарантирует, что вы достигнете третьего уровня [[Сила|Силы]] уже к 75 годам. Не стоит откладывать на следующую жизнь то, что можно по крайней мере начать в этой.


== Классификация уровней [[Сила|Силы]] Haskell - программистов ==
== Классификация уровней [[Сила|Силы]] Haskell — программистов ==


[[Изображение:Tshirt.jpg|right|thumb|143px|Хаскеллер с уровнем [[Сила|силы]] 2.3]]
[[Файл:Tshirt.jpg|right|thumb|143px|Хаскеллер с уровнем [[Сила|силы]] 2.3]]


=== n00b - 1 уровень ===
=== n00b — 1 уровень ===


Иногда задает вопрос «а где здесь переменные?»
Иногда задает вопрос «а где здесь переменные?»
Строка 105: Строка 103:
</pre>
</pre>


=== Beginner - 2 уровень ===
=== Beginner — 2 уровень ===


Написал туториал по применению и созданию монад (делает вид, что их понимает)
Написал туториал по применению и созданию монад (делает вид, что их понимает)
Строка 128: Строка 126:
</pre>
</pre>


=== Medium - 3 уровень ===
или как:
 
<pre>
fac n = do cont <- callCC $ \h' -> do
                  when (n <= 1) $ Cont $ const 1
                  h' n
          return cont
  `runCont` (* (fac $ n - 1))
</pre>
 
=== Medium — 3 уровень ===


Самостоятельно написал компилятор Haskell на Haskell.
Самостоятельно написал компилятор Haskell на Haskell.
Строка 197: Строка 205:
</pre>
</pre>


=== [[Григорий Перельман]] - 4 уровень ===
=== [[Григорий Перельман]] — 4 уровень ===


Высший Жрец. Постиг комонады и забивает стрелки (arrows) подорожникам.
Высший Жрец. Постиг комонады и забивает стрелки (arrows) подорожникам.
Строка 280: Строка 288:
   show = show . int
   show = show . int
</pre>
</pre>
=== Самый сильный программист — 5 уровень ===
[[Файл:thesz.jpg|right|thumb|143px|Хаскеллер с уровнем [[Сила|силы]] 5]]
Забивает на стрелки и Перельмана и пишет факториал так, как хочет
<pre>
  fac n = product [1..n]
</pre>


{{unix}}
{{unix}}


[[en:Haskell]]
[[en-gb:Haskell]]
[[Категория:Языки]]
[[Категория:Языки]]
[[Категория:Шутки для посвящённых]]
[[Категория:Шутки для посвящённых]]
[[Категория:Рекурсия|*]]
[[Категория:Рекурсия|*]]
[[en:Haskell]]