LINUX.ORG.RU

Функциональное программирование на Haskell : Часть 1. Введение

 


0

0

Цикл статей адресован читателю, знакомому с программированием, но не знакомому с функциональным подходом. Первые статьи будут затрагивать базовые понятия. Далее мы перейдем к особенностям синтаксиса и семантики Haskell и практическим вопросам. В первой статье мы вкратце расскажем о функциональном программировании, полезных источниках информации, а также реализациях Haskell.

>>> Подробности

★★★

Проверено: boombick ()
Ответ на: комментарий от lisprocks

> Никак. Он же «чистый». Только кошерные, немутабельные структуры данных. С неопределенным временем доступа.

Домохозяин детектед.

anonymous
()
Ответ на: комментарий от lisprocks

>> Это код дорогой товарищ.

Код - это алгоритм. А тут нет никакого алгоритма.

процедурщики востали из анабиоза

SV0L0CH
()

Только на лоре можно в обсуждении новости о хаскеле увидеть дискуссию на тему эволюционной теории :)

twoflower
()
Ответ на: комментарий от lisprocks

Нужен работничек, который 5 лет работал. Делал что скажут, и делал это хорошо и в срок


работничек детектед.

Karapuz ★★★★★
()
Ответ на: комментарий от anonymous

> Можно.

Можно.

Можно.


Можно.



.. поскипана куча ссылок на документацию API (или как там оно называется в Хаскеле) ...

Это всё слова. Народ, ну вы хоть бы ссылку на живой пример дали, типа
http://sequence.complete.org/node/258

И что мы видим? А ничего интересного вообще. Никакой функциональности или там математичности. Банальный линейный код -

сделать A
сделать B
если C, то сделать D
сделать E

Ну и нахрена оно нужно, если не даёт никаких вкусностей при решении стандартной задачи? На Лиспе и то забавнее выглядит. Эрланг, опять же, хотя бы самостоятельно праллелиться может и масштабироваться, при этом код вполне читаемый.

На C сервер с тем же функционалом будет выглядеть примерно так же, т.е. тот же линейный код с форками и прочим. А какой-нибудь Питон так и сходу не отличить будет.

Так зачем же тогда Хаскель на практике, с его мутным синтаксисом и пространной теорией, если никаких преимуществ ни в читабельности, ни в удобности, не говоря уже о скорости даже перед банальным С он не даёт, один геморрой в изучении непонятно зачем нужного «особенного подхода к программированию»?

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

> И что мы видим? А ничего интересного вообще. Никакой функциональности или там математичности.

Если Вы не хотите видеть, никто не в силах Вам показать.

> На C сервер с тем же функционалом будет выглядеть примерно так же, т.е. тот же линейный код с форками и прочим.

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

> А какой-нибудь Питон так и сходу не отличить будет.

действительно, питон почерпнул много идей из хаскеля.

> Так зачем же тогда Хаскель на практике, с его мутным синтаксисом и

> пространной теорией, если никаких преимуществ ни в читабельности, ни

> в удобности, не говоря уже о скорости даже перед банальным С он не

> даёт, один геморрой в изучении непонятно зачем нужного «особенного

> подхода к программированию»?


Мутный синтаксис и пространная теория - Ваши субъективные впечатления.
Если Вам он не даёт никаких преимуществ, один геморрой - тогда это у Вас нужно спросить, зачем Вам он нужен?

anonymous
()
Ответ на: комментарий от Stanson

> Так зачем же тогда Хаскель на практике, с его мутным синтаксисом и пространной теорией, если никаких преимуществ ни в читабельности, ни в удобности, не говоря уже о скорости даже перед банальным С он не даёт, один геморрой в изучении непонятно зачем нужного «особенного подхода к программированию»?

Некоторые чайники настолько чайники, что даже не знаешь, как им объяснить и стоит ли :-D

anonymous
()
Ответ на: комментарий от anonymous

> Если Вы не хотите видеть, никто не в силах Вам показать.

Я хочу, но не вижу.

Мутный синтаксис и пространная теория - Ваши субъективные впечатления. Если Вам он не даёт никаких преимуществ, один геморрой - тогда это у Вас нужно спросить, зачем Вам он нужен?


Судя по тому, что удалось прочитать и посмотреть - мне такое не нужно. Просто хотелось бы понять - оно вообще для чего-нибудь может понадобиться - для дела реального (как тот же Лисп - он мне тоже не нужен, но я приблизительно понимаю для чего он может пригодиться), или только для того, чтобы существовала тусовка любителей функционального программирования и когорта педагогов обучающих зачем-то оному?

Ну новость вот, про какую-то вроде как полезную штуку пишут, уже не в первый раз, а зачем эта именно штука нужна - никто объяснить не может.
Для чего какой-нибудь Lua - понятно, для чего Питон - тоже понятно, для чего нужен Audacity или Nouveau DRM или там какая-нибудь бухгалтерская система - я тоже пойму, хотя мне это не нужно.
А вот для чего какой-нибудь Clang или Haskell - я так и не понял до сих пор, хотя про Haskell постоянно попадаются новости.

Ну если Haskell это чисто академическая штуковина, предназначенная только для обучения студентов и для умозрительных упражнений любителей - неужели так сложно в этом признаться? Ну или сказать наконец, для решения каких задач Хаскель является оптимальным решением и привести пример такой задачи и её реализацию.

Мне пофиг на Хаскель, я просто хочу быть в курсе, для чего он, чтобы если встретится задача которую лучше всего решать на Хаскеле я не занимался бы фигнёй, а дал бы людям задание использовать правильный инструмент.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

>Мне пофиг на Хаскель, я просто хочу быть в курсе, для чего он, чтобы если встретится задача которую лучше всего решать на Хаскеле я не занимался бы фигнёй, а дал бы людям задание использовать правильный инструмент.

Может стоит дать людям самим выбрать инструмент? Или ваша кадровая политика такова что ваши люди на такое не способны?

SV0L0CH
()
Ответ на: комментарий от Stanson

> Мне пофиг на Хаскель, я просто хочу быть в курсе, для чего он, чтобы если встретится задача которую лучше всего решать на Хаскеле я не занимался бы фигнёй, а дал бы людям задание использовать правильный инструмент.

Хаскелль традиционно хорош по части написания компиляторов. Первая реализация perl6 была написана именно на хаскелле

Shimuuar
()
Ответ на: комментарий от SV0L0CH

> Может стоит дать людям самим выбрать инструмент? Или ваша кадровая политика такова что ваши люди на такое не способны?

Они могут просто не знать о том, что есть хороший инструмент, который позволит сделать работу быстро и качественно. И я не знаю, может мне нужен программист на Хаскеле, чтобы быстро и качественно выполнить задачу, а остальные пусть занимаются другими задачами Хаскеля не требующими.

Stanson ★★★★★
()
Ответ на: комментарий от Shimuuar

> Хаскелль традиционно хорош по части написания компиляторов. Первая реализация perl6 была написана именно на хаскелле

О, наконец-то! Спасибо огромное, хоть что-то по делу.
Какие задачи ещё есть для Хаскеля? Видимо анализ текстов и около того, раз для компиляторов он хорош?

Stanson ★★★★★
()

хорошая, интересная статья

Genuine ★★★
()
Ответ на: комментарий от Stanson

> Какие задачи ещё есть для Хаскеля? Видимо анализ текстов и около того, раз для компиляторов он хорош?

Написание парсеров, всяких. Как пример прекрасной библиотеки: parsec[1]. Писать парсеры с её использованием легко и приятно.

По моему сейчас активно копают в сторону параллелизма и конкурентности. Сам я этим не занимался, и ничего сложнее hello-world не писал, а на других языках вообще ничего, так что сказать определённо не могу. Но ограничение побочных эффектов, ИМХО помогает.

[1] http://hackage.haskell.org/package/parsec

Shimuuar
()
Ответ на: комментарий от Shimuuar

> Хаскелль традиционно хорош по части написания компиляторов

Ну и где компилятор C++ на хацкеле? Нетути? А, знаю. Хацкель хорош для написания компиляторов хацкеля.

Первая реализация perl6 была написана именно на хаскелле

И то, что на данный момент нет никакой полноценной реализации perl6, как бы, весьма показательно.

lisprocks
()
Ответ на: комментарий от Stanson

> А вот для чего какой-нибудь Clang

Ты на clang батон почто крошишь? Clang скоро заменит этот убогий, устаревший GCC. Он работает заметно быстрее, код получается почти столь же хороший, и хачить его не в пример проще.

И, кстати, Clang - отличная демонстрация того, какой язык на самом деле подходит для написания компиляторов. Это C++. На нём просто берут и делают. На хацкеле только обещают и сопли жуют.

lisprocks
()
Ответ на: комментарий от anonymous

> Кстати, некоторые источники называют хаскель лучшим императивным языком.

Эти «некоторые» - это один spj. Отличающийся весьма своеобразным чувством юмора.

действительно, питон почерпнул много идей из хаскеля.

Кстати, именно по этой причине педон не нужен. Начерпался.

lisprocks
()
Ответ на: комментарий от lisprocks

>Да ну? Как раз логикой тут и не пахнет.

Ещё один не освоивший современные алгоритмические методы.

KRoN73 ★★★★★
()
Ответ на: комментарий от lisprocks

>> действительно, питон почерпнул много идей из хаскеля.

Кстати, именно по этой причине педон не нужен. Начерпался.

Согдасен, для скриптов нужtн только JS.

SV0L0CH
()
Ответ на: комментарий от lisprocks

>Предоставленная сама себе природа только саморазрушается

Угу. И рост кристаллов, возникновение ячеек Бенара, вообще, масса процессов самоорганизации - это тоже всё обман населения и ZOG. И красота падающих снежинок - это не более чем саморазрушение! :D

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

>>Да ну? Как раз логикой тут и не пахнет.

Ещё один не освоивший современные алгоритмические методы.

Товарищ явно выпрашивает ссылку на литературу по этому поводу. Если дать то на пару дней успокоится, но потом опять придёт выпрашивать следующее. Так что лучше не давать.

SV0L0CH
()
Ответ на: комментарий от lisprocks

>Одному проценту мешает оказаться полезным то, что никто еще не наблюдал полезной мутации. Наблюдались только бесполезные и убийственные.

Предоставленная сама себе природа только саморазрушается (в полном согласии со вторым законом термодинамики). Всегда требуется разумное вмешательство для того, чтобы починить сломанное или создать новое.

Кстате! Заразись ВИЧ, он не опасен, он постоянно саморазрушается. Я ГАРАНТИРУЮ ЭТО!!!

SV0L0CH
()
Ответ на: комментарий от kranky

Советую поискать книгу «Функциональное программирование на языке Haskell» Душкин Р.В.

там как-то обстоятельнее все...
вообще, этот лисп 21-го века, хоть и поприятнее предшественника (скобок меньше писать надо), но все такой-же мозговорот для маргиналов.
да и в чем мощщ - непонятно.. в списках только однотипные элементы. фу.

но модный язык - с этим не поспоришь. из разряда «надо знать», хотя бы ради ощущения собственной продвинутости. :)

de_simakov
()
Ответ на: комментарий от Stanson

> Какие задачи ещё есть для Хаскеля?

Сервер hedgewards. Да и язык-то - универсальный. Пишите, что хотите.

anonymous
()

Среда программирования для Haskell/GHC

а что благородные доны используют как среду программирования для Haskell или GHC в частности? Я имею в виду, есть ли развитые средства типа SLIME для Common Lisp? А то у меня стоит ghc и «REPL» вроде есть, а как его к Emacs цеплять?

PS. Замечательная книжка Practical Common Lisp начинается тем что ставится грамотное рабочее окружение для лиспа и это действительно очень помогает.

anonymous
()
Ответ на: Среда программирования для Haskell/GHC от anonymous

> а что благородные доны используют как среду программирования для Haskell или GHC в частности? Я имею в виду, есть ли развитые средства типа SLIME для Common Lisp? А то у меня стоит ghc и «REPL» вроде есть, а как его к Emacs цеплять?

PS. Замечательная книжка Practical Common Lisp начинается тем что ставится грамотное рабочее окружение для лиспа и это действительно очень помогает.

К сожалению, со средой сейчас не очень. Можно прицепить VIM/Emacs/Kate. Разрабатывается Haskell FP под Eclipse, можно использовать. Есть Visual Haskell, но не знаю на чем там остановились, под какую студию последняя версия и какой компайлер поддерживает на данный момент, не в курсе. Но когда-то пробовал - понравилось. Единственный обещающий стать тру IDE - Leksah. Идеи хорошие (написан на Haskell, ориентирован только под Haskell, cabal, darcs etc. Конфеты_для_глаз прилагаются), но его еще пилить и пилить.

anonymous
()
Ответ на: комментарий от anonymous

> Да и язык-то - универсальный. Пишите, что хотите

Да да да. Как БФП писать тут уже нам продемонстрировали. Что-то не хочется.

lisprocks
()
Ответ на: комментарий от SV0L0CH

> Кстате! Заразись ВИЧ, он не опасен, он постоянно саморазрушается.

Дурак. Бог сотворил мир более шести тысяч лет назад, и до сих пор существуют, хоть и сильно испорченные, все живые существа, включая людей и вирусов. А за жалкие несколько лет конечно же ничего не саморазрушится. Раньше человек жил тысячу лет, сейчас и до ста не доживает, но на это саморазрушение шесть тысяч лет потребовалось.

lisprocks
()
Ответ на: комментарий от lisprocks

> Раньше человек жил тысячу лет, сейчас и до ста не доживает, но на
> это саморазрушение шесть тысяч лет потребовалось.


Есть мнение, что смерть от старости - это не баг, это фича.
Если бы никто не умирал от старости, популяция бы неуклонно росла (из-за рождения), пока не исчерпала бы все ресурсы, и это произошло бы очень быстро. Если же не было бы размножения и смерти, популяция бы не пополнялась и не убавлялась с постоянными скоростями, но в обозримой перспективы поумирала бы от несчастных случаев. А так с помощью рождения и естественной смерти поддерживается более или менее стабильный баланс.

Стало быть рождение и смерть - одни из важнейших изобретений ... хм ... природы.

Ну и плюс к контролю численности популяции, гораздо проще создавать новые виды - поправил немного генетическую информацию(алгоритм самопостроения) у небольшого числа особей в яйцеклетках и вот он - новый вид, который сам вырастет^W^W^W^W^W Ой, т.е. конечно же будет происходить эволюция.

anonymous
()
Ответ на: комментарий от lisprocks

>Бог сотворил мир более шести тысяч лет назад

Это ты притворяешся чтобы ЛОРовцы не комплексовали или действительно такой?

SV0L0CH
()
Ответ на: комментарий от lisprocks

>> Это код дорогой товарищ.

Код - это алгоритм. А тут нет никакого алгоритма.


Тогда тебе просто необходимо прочитать книжко Чарльза Петцольда «Код». В ней ты узнаешь, что даже азбука Морзе является кодом.

xintrea
()
Ответ на: комментарий от anonymous

> Оно для детей дошкольного/школьного возраста.

Это же хорошо. :)

pitekantrop ★★★
()
Ответ на: комментарий от drs

я бы сказал, что математики у него многовато. :)
излагает стройно и по порядку.
а за ссылку спасибо - посмотрю обязательно.

de_simakov
()
Ответ на: комментарий от xintrea

Конечно, в статье не определен синтаксис. Там всё написано «в целом» и на пальцах, потому что все подробности будут дальше (IBM вот уже напечатал вторую и третью часть).

Как автор статьи извиняюсь, если это вас смутило.

lyosha-beshenov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.