Haskell: различия между версиями
>One sk Нет описания правки |
Mass interwiki fix |
||
| (не показано 66 промежуточных версий 35 участников) | |||
| Строка 1: | Строка 1: | ||
[[ | {{ambox|image=[[image:StopCpp.gif|50px]]| | ||
text='''ВНИМАНИЕ!'''| | |||
text-small=Для понимания данного материала ваш моск должен быть очищен от императивного мировоззрения путем продолжительных медитаций с бубном. Для полного же понимания божественной сущности языка Haskell, ваш моск должен быть функционально чист и не иметь побочных эффектов. Возможно, имеет смысл обратиться к [[Ктулху]]. | |||
}} | |||
{{wikipedia}} | |||
{{q|<nowiki>sequence_ $ ["Пх'нглуи", "мглв'нафх", "Ктулху", "Р'льех", "вгах'нагл", "фхтагн", "!"] >>= (\x -> [print x])</nowiki>|Ктулху|Haskell}} | |||
{{q| | {{q|The speed of light sucks|Кармак|[[всякое]]}} | ||
{{q| | {{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 — Версия о Божественной Сущности == | |||
[[Файл:Unsafeperformio.jpg|right|thumb|132px|Иногда Демоническая АрхиМонада ЙО пытается попасть в реальный мир]] | |||
'''Haskell''' — священный язык программирования, дарованный шаманам ''Бубенлэнда'' их верховным божеством Комонада как универсальное средство для общения и духовного очищения, подходящее как божественным сущностям, так и (некоторым) простым смертным, переболевшим тяжелыми стадиями [[интеллект]]а. Из-за своего происхождения язык всегда был функционально чист. | |||
В честь своего божества и его щедрого подарка шаманы несколько раз в год проводили вычисление Великого Факториала. Со временем шаманам этот праздник надоел, они совсем обленились и перестали вычислять Великий Факториал. От этого Комонада периодически приходила в гнев и отправляла ответственных шаманов очищать моск к [[Ктулху]], своему соседу по пантеону. И однажды великий шаман Карри выдвинул величайшую теорию Ленивого Вычисления Великого Факториала. Суть её состояла в том, что постоянно считать Великий Факториал необязательно, его нужно вычислять только тогда, когда Комонада находится в плохом расположении духа, чтобы избежать зохавывания [[Ктулху]]. Теория стала главенствующей, а к набору особенностей Haskell добавилась еще исключительная ленивость. | |||
Комонада была единственным божеством, общавшимся со своими шаманами на чистых языках, и это крайне злило других богов, особенно [[Сотона|Сотону]]. Он создал армию ужасных демонов и приказал им испортить Haskell. Демоны начали искажать Haskell, внося в него злые сущности — древние рунические заклинания, называемые Монадами. В течение тысячелетий Монады разлагали язык изнутри, что в итоге привело к катастрофическому перевороту — Священные Бесконечные Списки Сообщений из Haskell 1.4 (известного также как Haskell 88) были предательски убиты, а на их месте воцарилась Демоническая АрхиМонада ЙО. | |||
Как это произошло — неизвестно, ибо ЙО до этого из-за своей исключительной грязности и пошлости не могла проникнуть ни в один язык. | |||
Опасность ЙО заключается в том, что вместо того, чтобы изменять свое восприятие мира, она изменяет сам мир, и неосторожное с ней обращение может привести к турбулентностям в фундаментальных слоях материи вселенной, результирующих в феерическом и глобальном ППЦ’е. Также [[Сотона|Сотоной]] был введен исключительно похабный легион Монадных [[Трансформеры|Трансформеров]], позволяющих засовывать одни монады в другие. Как правило, обычно ЙО засовывается в другие монады, появившиеся в Haskell гораздо раньше. Ввиду огромного размера ЙО, программы с использованием Монадных Трансформеров не рекомендуется читать детям до 16 лет и [[Незамутненные девушки|незамутненным девушкам]]. | |||
в | |||
Окончательное падение бастиона чистоты Haskell произошло одновременно с вводом Сотоной в язык механизма самовольного написания монад. Ранние чистые спецификации языка отправились [[Фтопка|фтопку]]. Сотона активно распространяет заблуждение, что современный диалект Haskell 98 — это и есть [[ТруЪ]] Haskell. На самом деле это лишь жалкое подобие первоначального божественного языка. | |||
Окончательное падение бастиона чистоты Haskell произошло одновременно с вводом Сотоной в язык механизма самовольного | |||
написания монад. Ранние чистые спецификации языка отправились фтопку. Сотона активно распространяет заблуждение, что | |||
современный диалект Haskell | |||
божественного языка. | |||
Фашисты, боровшиеся за чистоту немецкой расы, также боролись и за чистоту языка. Они пытались восстановить | Фашисты, боровшиеся за чистоту немецкой расы, также боролись и за чистоту языка. Они пытались восстановить | ||
магические спецификации первозданного Haskell’а. Восстановленный язык должен был называться Haskell88 (как и | магические спецификации первозданного Haskell’а. Восстановленный язык должен был называться Haskell88 (как и | ||
последний чистый вариант, существовавший еще во времена [[ | последний чистый вариант, существовавший еще во времена [[Шумеры|шумерчегов]]), и планировалось сделать данный язык государственным. В последней сохранившейся версии их языка — Haskell88.14hh были введены монады SS и SD, которые очистили язык от всех других монад, кроме великой монады ЙО. Этот результат не устроил Адольфа [[Гитлер]]а. По его указу был собран [[УберШтурманКонсилиум]] самых лучших [[УберШтурманУмов]] Германии. На [[УберШтурманКонсилиуме]] было решено провести [[УберШтурманЭксперимент]] по геноциду монады ЙО. Достоверно известно, что после непродолжительного времени после начала эксперимента Третий Рейх пал, что ещё раз подчеркнуло исключительную опасность монады ЙО. | ||
В последней сохранившейся версии их | |||
других монад, кроме великой монады ЙО. Этот результат не устроил Адольфа | |||
самых лучших [[УберШтурманУмов]] Германии. На УберШтурманКонсилиуме было решено провести [[УберШтурманЭксперимент]] по геноциду монады | |||
ЙО. Достоверно известно, что после непродолжительного времени после начала эксперимента Третий Рейх пал, что ещё раз | |||
подчеркнуло исключительную опасность монады ЙО. | |||
== Более реалистичная версия == | == Более реалистичная версия == | ||
Haskell возник как результат пьянки между [[Столлман | Haskell возник как результат пьянки между [[Столлман|Ричардом Столлманом]], [[Гордон Фримен|Гордоном Фрименом]] и [[Карри, Хаскелл|Хаскеллом Карри]]. Название языка возникло | ||
как подтверждение ответа на фундаментальный вопрос «ты меня уважаешь?», логотип был предложен Фрименом, а предложение | как подтверждение ответа на фундаментальный вопрос «ты меня уважаешь?», логотип был предложен [[Гордон Фримен|Фрименом]], а предложение [[Столлман]]а добавить скобок было отправлено [[Топка|фтопку]] вместе с самим [[Столлман]]ом. | ||
добавить скобок было отправлено фтопку вместе с самим | |||
Для придания статуса серьезности данной ошибке молодости была придумана Версия о божественной сущности. | Для придания статуса серьезности данной ошибке молодости была придумана ''Версия о божественной сущности''. | ||
== Факты новейшей истории == | == Факты новейшей истории == | ||
* Греки нагло сплагиатили логотип Хаскелла в качестве 13-й буквы своего [[ | [[Файл:HL_splash.JPG|right|thumb|173px|Сплэш героического эпоса [[Half-life|Полуразвал]]]] | ||
* В 1998 году вышел героический эпос [[Half- | |||
* Для мирового сообщества Хаскелл играет несколько важных ролей, главенствующая среди | * Греки нагло сплагиатили логотип Хаскелла в качестве 13-й буквы своего [[алфавит]]а | ||
* Haskell номинируется на звание «природного врага | * В 1998 году вышел героический эпос [[Half-life|Полуразвал]] о хаскеллере, чисто функциональными методами осуществившем полный garbage collection | ||
* Для мирового сообщества Хаскелл играет несколько важных ролей, главенствующая среди которых — в жизни его (Хаскелла) создателей | |||
* Haskell номинируется на звание «природного врага № 1 [[Риальные пацаны|риальных пацанов]] от программирования» | |||
* В языке Haskell Вечность (незавершаемая программа) — это разновидность [[Задница|Задницы (_|_)]], что доказывает его [[Труъ]]-происхождение | |||
== Подозрения и теории заговора == | == Подозрения и теории заговора == | ||
* | * Монады — часть плана [[Ктулху]] по зохавыванию моска фсех (и [[Сотона]] тут не замешан) | ||
* Культист Карри исказил священные тексты, назвав вечный язык своим именем | * Культист Карри исказил священные тексты, назвав вечный язык своим именем | ||
* | * ST — часть плана [[Сотона|Сотоны]] по зохавыванию чистых функциональных фич Haskell, которые не может асилить ЙО. | ||
== Особенности языка == | == Особенности языка == | ||
* | * Haskell — пока еще единственный язык программирования, в котором есть оператор ''«фтопку»'' (>>=) | ||
* Программы на Haskell настолько ленивы, что по умолчанию вообще не хотят работать. Скорость и результаты работы | * Программы на Haskell настолько ленивы, что по умолчанию вообще не хотят работать. Скорость и результаты работы всецело зависят от джедайской [[Сила|силы]] (''force'') хаскеллера. | ||
всецело зависят от джедайской силы (force) хаскеллера. | * Одна из божественных сущностей, дожившая до времен Haskell98 — стиль-без-башни. Он позволяет записывать функции, не зная, кто, где, когда, как, почему, зачем будет их вызывать. Примеры шедевров: | ||
* Одна из божественных сущностей, дожившая до времен | |||
кто, где, когда, как, почему, зачем будет их вызывать. Примеры шедевров: | |||
<pre> | <pre> | ||
(. return) . (:) | (. return) . (:) | ||
flip . ((flip . (flip .)) .) | flip . ((flip . (flip .)) .) | ||
flip flip snd . (ap .) . flip flip fst . ((.) .) . flip . (((.) . (,)) .) | |||
</pre> | </pre> | ||
Считается, что в будущем безбашенный Haskell-стиль по количеству скобок обгонит Лисп, что приведет к зохавыванию последнего | Считается, что в будущем безбашенный Haskell-стиль по количеству скобок обгонит [[Лисп]], что приведет к зохавыванию последнего Haskell’ом и переделу [[Матрица|Матрицы]] (которая, как известно, есть самоpaзродившаяся программа на [[Лисп]]е). [[Столлман]] с этим несогласен, но его мнение было отправлено фтопку еще во время создания Haskell. | ||
Haskell’ом и переделу Матрицы (которая, как известно, есть | |||
его мнение было отправлено фтопку еще во время создания Haskell. | |||
* Существует короткое заклинание, которое позволило Haskell поработить тысячи программистов: | * Существует короткое заклинание, которое позволило Haskell поработить тысячи программистов: | ||
<pre> | <pre> | ||
qs [] = [] | qs [] = [] | ||
qs (x:xs) = (qs l) ++ [x] ++ (qs r) where (l,r) = partition (<) xs | qs (x:xs) = (qs l) ++ [x] ++ (qs r) where (l,r) = partition (<x) xs | ||
</pre> | </pre> | ||
Контрзаклятие, написанное на C, как правило бессильно, хотя и занимает куда больше места. | Контрзаклятие, написанное на C, как правило бессильно, хотя и занимает куда больше места. | ||
* Революции под лозунгом | * Революции под лозунгом «порезать Haskell по самые монады», как правило, подавлялись Верховным Жрецом [[Григорий Перельман|Григорием Перельманом]]. | ||
* Вывод | * Вывод типов — фича, заложенная в Haskell самой Комонадой. Однако ввод типов никто никогда не реализовывал. [[Ботаны]] многих эпох выдвигали предположения, что однажды типы в Хаскелле закончатся, ибо вводить их некому. Тем не менее, никто не знает, почему этого до сих пор не произошло. Есть мнение, что, узнав ответ на этот [[42|вопрос]], мы гораздо лучше будем понимать структуру Вселенной (в частности, разберемся в принципах работы [[биореактор]]а и [[Малый адронный коллайдер|малого адронного коллайдера]]). | ||
Ботаны многих эпох выдвигали предположения, что однажды типы в Хаскелле закончатся, ибо вводить их некому. Тем не менее, никто | |||
не знает, почему этого до сих пор не произошло. Есть мнение, что, узнав ответ на этот вопрос, мы гораздо лучше будем понимать структуру Вселенной | |||
(в частности, разберемся в принципах работы [[ | |||
== Изучение == | == Изучение == | ||
[[ | [[Файл:The_Haskell_SE.jpg|right|thumb|145px|Обложка HSOE]] | ||
Самый Мега-[[ТруЪ]]-одобрямс учебник по Haskell98 называется HSOE (Haskell SOtona Edition; что часто неверно расшифровывают как | Самый Мега-[[ТруЪ]]-одобрямс учебник по Haskell98 называется HSOE (Haskell SOtona Edition; что часто неверно расшифровывают как Haskell School Of Expression). Главной особенностью данного талмуда является наличие изображения [[моск]]а правильно обученного хаскеллера на обложке, что позволяет на глаз оценивать прогресс обучения. | ||
Haskell School Of Expression). Главной особенностью данного талмуда является наличие изображения [[ | |||
хаскеллера на обложке, что позволяет на глаз оценивать прогресс обучения. | |||
Другой популярный учебник по | Другой популярный учебник по Haskell — YAHT (YA Havat Tebya), написанный еще [[Ктулху]] III по заказу Комонады, к настоящему моменту безнадежно устарел. Рецензии и поправки автору присылались, но он до сих пор не удосужился проснуться, чтобы их прочитать. | ||
моменту безнадежно устарел. Рецензии и поправки автору присылались, но он до сих пор не удосужился проснуться, чтобы их | |||
прочитать. | |||
В среднем обучение | В среднем обучение Haskell’у начинается в 10-12 лет. Своевременное начало обучения гарантирует, что вы достигнете третьего уровня [[Сила|Силы]] уже к 75 годам. Не стоит откладывать на следующую жизнь то, что можно по крайней мере начать в этой. | ||
уровня [[Сила|Силы]] уже к 75 годам. Не стоит откладывать на следующую жизнь то, что можно по крайней мере начать в этой. | |||
== Классификация уровней [[Сила|Силы]] | == Классификация уровней [[Сила|Силы]] Haskell — программистов == | ||
=== | [[Файл:Tshirt.jpg|right|thumb|143px|Хаскеллер с уровнем [[Сила|силы]] 2.3]] | ||
=== n00b — 1 уровень === | |||
Иногда задает вопрос «а где здесь переменные?» | Иногда задает вопрос «а где здесь переменные?» | ||
| Строка 134: | Строка 103: | ||
</pre> | </pre> | ||
=== | === Beginner — 2 уровень === | ||
Написал туториал по применению и созданию монад (делает вид, что их понимает) | Написал туториал по применению и созданию монад (делает вид, что их понимает) | ||
| Строка 157: | Строка 126: | ||
</pre> | </pre> | ||
=== | или как: | ||
<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. | ||
| Строка 226: | Строка 205: | ||
</pre> | </pre> | ||
=== Григорий Перельман | === [[Григорий Перельман]] — 4 уровень === | ||
Высший Жрец. Постиг комонады и забивает стрелки (arrows) подорожникам. | Высший Жрец. Постиг комонады и забивает стрелки (arrows) подорожникам. | ||
| Строка 309: | Строка 288: | ||
show = show . int | show = show . int | ||
</pre> | </pre> | ||
=== Самый сильный программист — 5 уровень === | |||
[[Файл:thesz.jpg|right|thumb|143px|Хаскеллер с уровнем [[Сила|силы]] 5]] | |||
Забивает на стрелки и Перельмана и пишет факториал так, как хочет | |||
<pre> | |||
fac n = product [1..n] | |||
</pre> | |||
{{unix}} | |||
[[en:Haskell]] | |||
[[en-gb:Haskell]] | |||
[[Категория:Языки]] | |||
[[Категория:Шутки для посвящённых]] | |||
[[Категория:Рекурсия|*]] | |||