Pull to refresh

Comments 27

Формально все функции можно разделить на чистые и монадические.
О да, то есть если мы используем монаду Maybe, мы сразу теряем чистоту.
Монадические же функции — разговор отдельный, они как раз придуманы для того, чтобы обозначить зависимость функций от каких-либо внешний проявлений посредством модели, называемой монада.
Простите, но бред.
Как я уже говорил, функции в Haskell описываются системами уравнений, что наглядно представлено в определении launch.
Э-э… по-моему, у вас в голове перемешалась каша между pattern matching и уравнениями.
Дело в том, что функция, выполнение которой представляет собой выполнение цепочки действий (то есть монадическая функция), не может быть чистой.
Опять бред. Определите же правильно понятие «чистота».

Я прочел все, дальше просто не стал копировать спорные места.
Резюмируя: похвальное начинание, хорошая задумка, однако такое исполнение только еще больше запутает спагетти в головах у тех, кто, возможно, приобщился бы сам к функциональному программированию, однако теперь там мало что поймет.

Лично я просто порекомендую желающим прочесть «Yet Another Haskell Tutorial», «Real World Haskell», «Learn You A Haskell For Greater Good» — в каком-нибудь порядке.
Да, я знаю, что такое монады. Знаю и о Maybe, и о списках… Я указал, что монады более широкое понятие, но здесь следует думать о них только в контексте I\O. Вы правы, наверное, это не очень корректно.
Отсюда и некорректность определения чистоты. Завтра попробую «пофиксить» текст, сегодня уже глаза слипаются…

А вот про pattern matching не очень понял. Вы имеете ввиду, что процедура выбора нужного уравнения лишь один из случаев применения сопоставления с шаблоном?
Я к тому, что если преследовать цель объяснить несведущим Haskell, то называть клозы паттерн-матчинга «системой уравнений» — значит еще больше запутать жизнь. Если, конечно, вы не хотите углубиться внутрь в реализацию и рассказать, что такое «вывод типов по Хиндли-Милнеру» и «унификация».
Проще привести несколько примеров применения паттерн-матчинга по жизни (не только в определении функции) и пойти дальше.
паттерн матчинг — это, скорее, не система уравнений, а одно уравнение, описывающее функцию, по разному определенную на разных участках :)



или для рекурсивного определения функций:




Ну вот, вопиющие неточности вроде как устранил…
монадах — это что? может «командах»
Автору бы поправить, не только я это слово не знал.
Что поправить? Он вполне адекватно ввел это слово в процессе изложения.
И вообще, говорить о Haskell, не говоря о монадах, невозможно.
я про то, что слово отметить ссылкой на википедию, т.к. «Хорошо бы иметь представления о монадах»

логично, не зная данного слова, прочитать «командах»
Логично, не зная какое-то слово, поискать его в интернете
Знаете, слово «монада» в тексте упоминается 10 раз(на русском). Все 10 опечатки??
А слова «репозиторий», «дистрибутив» не надо в линки на википедию превратить?

Вроде хабра, а не сайт знакомств, в чём проблема самому вгуглить слово «монада», которое, я уверен, больше 70% хабровчан знают?
Слово созвучно со словом команда, и чтение топика, тем 30% несчастных, которых, судя по минусам, все так презирают, будет гораздо комфортней.
UFO just landed and posted this here
По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолены бкувы в солве. Галвоне, чотбы
преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм. Пичрионй
эгото ялвятеся то, что мы не чиатем кдаужю бкуву по отдльенотси, а все солво цликеом. (с)
UFO just landed and posted this here
Речь не о том, что могу или не могу сделать я.
речь о том, что слово созвучно и единичные вкрапления, при чтении, могут быть не замечаны…
UFO just landed and posted this here
Отличная статья, автор побудил прямо сейчас поставить и начать смотреть haskell.
А скажите, чем вы пользовались при написании программы: просто текстовым реактором и компилятором в командной строке или какой-то средой? Я пользовался плагином для Эклипса и остался доволен, несмотря на то, что он весьма сыроват.
Я пробовал и Leksah (специальная IDE для Haskell, написанная на Haskell), и плагин к Eclipse смотрел, но пришел к выводу, что лично мне это всё не нужно. Поскольку у меня Linux, то я пользуюсь текстовым редактором gedit с плагином терминала. Gedit умеет подсвечивать код, поддерживать отступы и т.п., а в терминале в это время запущен GHCi интерпретатор, этого хвататет, ну во всяком случае хватало для моих относительно небольших проектов.

В итоге получается как-то так.
gedit наше все :) А чтобы освободить больше места под код, можно юзать guake или аналоги.
На самом деле у меня разрешение 1920х1080, поэтому проблем с недостатком места не ощущаю :) А окошко сжал специально для скриншота просто для удобства восприятия.
Если честно, статья наоборот оттолкнула от изучения функциональных языков прог-ния. Ибо всё это делается на том же питоне за 2 минуты. Не поймите неправильно, я вовсе не говорю, что «надо всё двумя строчками делать!» или «слишком много букв», но хотелось бы увидеть практическое преимущество этого языка перед другими. Если статья была направлена на тех, кому уже интересен этот язык и требуется помощь в написании чего-то бытового, то мой коммент ни в коем случае не осуждение…
Если вы хотите увидеть преимущество Хаскеля перед другими языками, то эта статья не совсем подходит. Она скорее иллюстрирует, что Хаскель, в общем-то, это тоже может, и даже не очень извратно.
Хаскель, в общем, удобнее других функциональных языков при решении традиционно функциональных задач. Например работать со списками на нем гораздо удобнее, чем на OCaml'е в силу присутствия list comprehensions и кучи полезных функций. Хаскель ленив, это дает определенные преимущества, в т.ч. работа с бесконечными списками на том же OCaml'е — изврат, а на Хаскеле совершенно естественное занятие. Чистота тоже полезная вещь. А еще в Хаскеле строки представляются не в виде массива, а в виде списка, что иногда удобнее. Однако Хаскель менее универсален, многие вещи на нем, увы, пишутся хуже, чем на других языках.
В Питоне тоже частично реализовано функциональное программирование
Sign up to leave a comment.

Articles

Change theme settings