Функциональное программирование на языке Haskell Курс знакомит слушателей с языком Haskell - наиболее известным чистым функциональным языком программирования. Мы изучим понятийный аппарат и методы программирования, характерные для функциональных языков, и научимся применять их, используя богатый инструментарий, предоставляемый языком Haskell. Совместный курс Академического университета и Computer Science Center.
Все равно стоит читать на английском. При всем моем презрении к носителям этого языка, но английский - стал важным техническим языком. Станешь много читать - будет вери гуд ёр инглиш :)
Очень рекомендую вот этот курс, в двух частях, на русском. Первая часть весьма хороша. Второй части кажется аналогов нет, ни на курсере, ни на едексе, нигде не встречал. Правда она сложная довольно.
Я бы начал с первой части, потом прочитал бы хорошую книжку и потом вторую часть взял бы.
PS. Да, не жди что осилишь за две недели. Это довольно непросто, не столько сам язык, сколько то что называют «паттернами» в объектном мире - т.е. монады, аппликативные функторы и прочие абстракции и варианты их исопльзования.
Не совсем понял твою мысль, но свою выскажу с ещё одной стороны чуть подробнее:
Материала там (в хаскеле) довольно много. С наскоку одолеть до уровня «я понимаю как это в реальной жизни» не выйдет. Т.е. это несколько (больше двух точно) месяцев регулярных занятий чтобы достичь какого-то приличного начального уровня.
Брагилевский (ссылку на его обзор литературы я дал выше, он член коммитета хаскель или как там это называется) говорит что книга Курта предназначена для не-хаскель программистов с опытом. Может быть можно начать с неё.
Но в целом, я бы начал с курса Москвина (первая часть) либо learn you a haskell for great good (есть на русском, кажется). Learn you a haskell довольно давно вышла, но так как она для новичков, то актуальность не потеряла.
Москвин1 и «во имя добра» - вещи примерно одного уровня (кажется Москвин несколько богаче, и соотвественно, сложнее, но я уже не особо помню, не уверен). Мне кажется обе эти вещи брать не стоит, я бы взял только Москвина. Это какой то «пред» уровень будет. Займёт месяц-два.
Затем возьми хорошую книжку, из тех что рекомендует Брагилевский , хочешь возьми Курта, хочешь - Хаттона или Бёрда. Посмотри описание в обзоре и реши что тебе больше подходит. В них во всех есть базовый курс, но после Москвина это будет повторение и пройдёшь быстро. Но там не только база, так что за неделю не осилишь всё равно.
Это ещё месяц-два.
После этого можно взять вторую часть курса Москвина. Это ещё месяц-два.
После этого можешь сам решать что тебе нужно.
Из книг на русском хочу упомянуть книгу Р. Душкина - я её проглядел буквально по оглавлению - эта книга включает в себя некий базис теор ката и лямбда исчисления. Это сложно для начала. Её стоит оставить на момент когда сам будешь разбираться в основах, на мой взгляд.
прошу прощения, наврал автора - Р.Душкин это другая книга. Если смотреть по содержанию/оглавлению, то весьма интересная, но сложная и нацеленная на изучающих теорию языков программирования, кажется, а не на практику вроде веб-дева. Я бы поставил её тоже после Москвина1 наряду с хаттоном, куртом и бёрдом (но книгу я не читал, сужу только по содержанию).
Спасибо за все советы, я в данный момент пока чит ohaskell.guide и пока получается подобие хелловордов,меня интересует одна вещь,есть ли в хаскеле модуль позволяющий записывать инфу в файл или наоборот искать в файле нужно слово,например в Питоне я создавал переменную с нужным словом,например mail = '@' и затем уже открывал файл и делал так for line in file:
If mail in file
export.write()
Так вот вопрос,такое в хаскеле реализуемо?
может быть можно как то покрасивее записать с помощью генераторов списков или «монадных операций», не знаю. Вечером попробую написать рабочий тестовый пример.
По поводу ohaskell.guide - читаестя легко, и кажется, всё понятно. Кажется, автору, действительно, удалось «развеять страхи». Но по содержанию это введение во введение. Т.е. кажется что вот эта книжка, а затем Москвин1 - какое то близкое к оптимальному начало.
Ну во-первых, да, вполне реализуемо после познавания азов, это точно. Ну правда надо будет доки для библиотек поглядеть, ясное дело. Думаю, эту программу можно и за десяток вечеров переписать, даже если ничего не знаешь о хаскеле. Может стоит сначала прочитать ohaskell.guide, будет проще.
Сложность хаскеля как я уже упоминал, в первую очередь не в языке а в «паттернах использования».
Программа которую ты дал довольно короткая и паттернам там делать может и есть чего, но я особо не вижу. И из объектных паттернов там только листенеры на кнопки вешаются и всё, что в общем то тривиально.
ЗЫ. правда я не понял, как там в .doc файл записываются простые строки? Хотя, вероятно, это просто расширение такое выбрано для текстового файла...
хм, понятно, какой-то экспорт хитрый там, прозрачный для пользователя.
да, в текстовый файл код будет выглядеть примерно как выше, ну плюс надо повесить обработчики на кнопки. Хочешь, могу ради интереса попробовать пример кода сделать в конце недели где-то. Выглядеть будет, по моему, примерно так же как на питоне, плюс-минус поправки на язык.
В этой программе никакого питона, по сути, нет. Строки 15-18, 25-28, 30-33, 35-38 выносятся в однострочник, в остальном идёт возня с тулкитом. Будь tk для хаскеля жив, для реализации хватило бы азов синтаксиса, а код выглядел бы точно так же.
Весь «осмысленный» (фильтрующий) код находится в файле src/Lib.hs. Этот файл экспотрирует только две функции: runFilterEmails и runFilterNumbersRu, которые вызываются в app/Main.hs. Сам Main.hs содержит работу с GTK и вызов этих двух функции. Думаю, что код работы с GTK будет примерно таким же и на других языках.
фильтрует inputFile фильтром fltr и пишет результат в outputFile. С ней можно поиграться прямо из консоли, как описано в README.md. Постарался в ридми так же кратенько упомянуть что к чему. Надеюсь, окажется полезно.