Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.98/132: Рейтинг темы: голосов - 132, средняя оценка - 4.98
 Аватар для Republic
14 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 21

О Haskell по-человечески

17.03.2014, 17:34. Показов 28174. Ответов 55

Студворк — интернет-сервис помощи студентам
Первое издание этой книги было опубликовано 5 марта 2014 года, о чём Денис Шевченко — её автор сообщил на Хабрахабре. На момент написания этого сообщения доступно уже третье издание.
Как пишет автор:
Функциональное программирование — это своеобразное гетто посреди мирового мегаполиса программной разработки. Доля функциональных языков на рынке очень мала, а программистов, использующих эти языки, считают либо недосягаемой элитой, либо асоциальными идиотами. Цель этой книги — разрушить такое представление.
Сайт книги.
Авторство принадлежит Денису Шевченко.
10
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2014, 17:34
Ответы с готовыми решениями:

Место ФП и Haskell в компьютерной индустрии (Для чего он нужен, этот Haskell?)
"У нас" ? А где преподавание этой экзотики на высоте? Добавлено через 2 минуты А где такие "пришедшие" используют...

вывести результат функции по человечески
функция возвращает c помощью return массив, а мне нужно вывести его первый елемент приходится делать так: $arr = func(); echo $arr; ...

Не получается по-человечески осветить модель
Добрый день! Я использую OpenGLControl.cs для C#. Модель принимаю из файла STL (с этим проблем нет), отображаю ее на экране...

55
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
27.04.2014, 23:50
Студворк — интернет-сервис помощи студентам
А разве тот же LHFGG не бесплатно доступен как на русском так и на английском языках при том что издается в бумажном варианте?
Насколько я знаю, она доступна бесплатно на английском, но не на русском. Разве текст русского издания (http://dmkpress.com/catalog/co... 060-038-5/) тоже где-то лежит в легальном бесплатном доступе?
0
21 / 17 / 1
Регистрация: 18.03.2012
Сообщений: 111
Записей в блоге: 1
28.04.2014, 00:02
Ну на том же хабре по частям лежит, плюс на народе где то видел сделанный под оригинал сайт с частичным переводом.
0
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
28.04.2014, 00:06
Едва ли это легально. В том смысле слова, что издательство вполне может предъявить претензию.

Я скажу так: если бы мне удалось найти такое издательство, которое, заинтересовавшись моей книгой, разрешило бы мне оставить в свободном доступе электронный вариант - я бы согласился на издание не задумываясь.
0
21 / 17 / 1
Регистрация: 18.03.2012
Сообщений: 111
Записей в блоге: 1
28.04.2014, 00:20
Ну раз электронная версия попала в интернет, то считайте она уже навечно в свободном доступе
0
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
28.04.2014, 00:26
Так и есть! Она уже не только на Twirpx лежит, но и на Рутрекер недавно попала...
0
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
20.05.2014, 16:53
Приветствую!

С радостью сообщаю, что положено начало рассмотрению монадных трансформеров. Традиционно этот механизм считается сложным для освоения новичками, и, признаюсь, я тоже не сразу въехал. Но теперь рассмотрены трансформеры MaybeT и ReaderT. И если MaybeT элегантен, то в ReaderT я просто влюбился.

Всем заинтересовавшимся - просьба сюда.

На очереди WriterT и StateT.

Добавлено через 23 часа 53 минуты
И сразу, по горячим следам, добавлена глава про не менее полезный трансформер WriterT.
1
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
21.05.2014, 18:31
Ну и для полноты картины, глава про ещё более мощный трансформер StateT.
1
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
22.05.2014, 16:02
dshevchenko, Прочитал вчера. Премного Вам благодарен. Замечания: не оператор, а функция. В языке Haskell всё есть функция и нет операторов. Это Ваши старые императивные привычки. Не "функция композиции", а "композиция функций", это же введение в анализ, нужно знать матчасть. С другой стороны если рассуждать формально то Вы правильно применяете термины "функция композиции" и "функция аппликации", ибо это функции таковыми и являются и задача их состоит в том чтобы композировать или апплицировать функции аргументы. \n
Где-то Вы писали самокритичное рассуждение о том, как Вам гипотетически ответят в издательстве как автору без регалий и званий. Да, Вы все таки не дотягиваете и есть еще куда расти. Вам как интересующемуся наверняка будут интересны и полезны следующие издания Purely Functional Data Structures, ну а эта книга вообще безценна Concepts, Techniques, and Models of Computer Programming
В частности Вы бы не были так удивлены тем, что в функциональных языках нет привычного императивщикам присваивания (и то это не всегда так, тот же racket прекрасно уживается с функцией set!). Строго говоря, Haskell не имеет присваивания в той форме, к которой мы привыкли из си, паскаля и т.д. Имеет, но эта функция не доступна программисту, этим занимается компилятор. Да и (я даже как-то в виде загадки постил этот момент) каждая "переменная" в функциональном языке есть stateless (бесправный чужак, гость или что-то в этом роде). Сам термин "переменная" (variable) мы можем понимать в двух аспектах:
1. хранилище
2. связанное имя.
Так вот имя связывается с хранилищем лишь однажды и называется этот подход single-assignment store. Все это и многое другое описано во втором приведенном источнике.
P.S. Большая благодарность за труд. Успехов Вам на Вашем новом поприще!
3
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
23.05.2014, 14:09
Цитата Сообщение от castorsky Посмотреть сообщение
dshevchenko, Прочитал вчера. Премного Вам благодарен.
И я вам благодарен за ваши замечания.

Цитата Сообщение от castorsky Посмотреть сообщение
Замечания: не оператор, а функция. В языке Haskell всё есть функция и нет операторов. Это Ваши старые императивные привычки.
С одной стороны, вы совершенно правы. Но с другой, я неоднократно встречал, как в англоязычной литературе по Haskell функцию, предназначенную для инфиксной записи, называют словом operator. Разумеется, `(++)` это функция конкатенации двух списков, но её часто называют оператором. Впрочем, я не считаю это столь уж принципиальным вопросом. Скорее, это лишь игра слов... :-)

Цитата Сообщение от castorsky Посмотреть сообщение
Где-то Вы писали самокритичное рассуждение о том, как Вам гипотетически ответят в издательстве как автору без регалий и званий. Да, Вы все таки не дотягиваете и есть еще куда расти.
О да, тут вы совершенно правы. Я недавно встретил одну презентацию по Haskell "для реального мира", посмотрел рекомендованные для изучения разделы языка - и понял, что мне ещё ой как много всего нужно изучить.

Цитата Сообщение от castorsky Посмотреть сообщение
P.S. Большая благодарность за труд. Успехов Вам на Вашем новом поприще!
Спасибо!

Добавлено через 21 час 52 минуты
И ещё одна глава добавлена, о трансформерах ErrorT и EitherT. Красавцы!
2
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
27.05.2014, 11:18
Рад сообщить, что теперь книга стала ещё ближе к обучающимся. В конце каждой главы, содержащей примеры кода, вас ждут две новые кнопки:

1. Первая ведёт прямо на GitHub к соответствующему тестовому файлу.
2. Вторая ведёт на FPComplete, где вы сможете незамедлительно скомпилировать код из главы и запустить его на выполнение. Очень удобная возможность поиграться с кодом вживую, даже без установленной у себя Haskell Platform.
4
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
18.09.2014, 22:15
После долгого перерыва работа над книгой наконец-то возобновилась. Помимо прочего, я отказался от GitBook в пользу Hakyll для генерации веб-версии. Кроме того, теперь книгу можно обсуждать на месте: в конце каждой из глав вы найдёте нашу любимую Disqus. Прошу ознакомиться: http://ohaskell.dshevchenko.biz/ru/index.html

Многие главые нуждаются в серьёзной доработке, это я уже осознал. Кое-что нужно добавить, кое-что расширить, кое-что уточнить.
4
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
21.09.2014, 19:58
В этом разделе нет отдельной темы про литературу по Haskell. Но более-менее по-человечески и по-русски написана имхо не только сабжевая книга, а еще:
- учебник Антона Холомьёва
- учебник Григория Макеева
- море разливанное литературы от Романа Душкина (в т.ч. ФП на языке Haskell) - зачастую глубже рассматриваются теоретические вопросы
- учебник Мирана Липовачи "Во имя добра"

ЗЫ и все это можно без труда найти в свободном доступе в сети.
2
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 22:41
И уже не сильно по-человечески: одни действительно умные коллеги с научного форума подкинули следующую ссылку -
Code
1
http://cs.anu.edu.au/~Ben.Lippmeier/project/thesis/thesis-lippmeier-sub.pdf
, сопроводив ее некоторым текстом:
Об отсутствии явного состояния (state) и переменных в функциональных языках программирования — Ben Lippmeier, "Type Inference and Optimisation for an Impure World". PhD-диссертация, посвящена явному включению деструктивного обновления в ФЯП. Содержит обсуждение, почему эта возможность важна и нужна, обзор использующихся ныне подходов для работы с состоянием.
2
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
15.01.2015, 17:47
Добрый день! Сообщаю участникам форума, что у нас родилось русскоязычное сообщество Haskell-разработчиков. Цель - собрать воедино всех Хаскелистов рунета в единое блоговое пространства, для обмена премудростями.

Официальный сайт: http://ruhaskell.org/
5
Модератор
 Аватар для Curry
5164 / 3523 / 536
Регистрация: 01.06.2013
Сообщений: 7,674
Записей в блоге: 9
01.04.2016, 08:21
Автор выложил О Haskell по-человечески 2.0 (betta). Книга в процессе написания. Надеюсь автор, dshevchenko, не против ссылки. А то он сюда, что то забыл написать.
3
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
04.04.2016, 14:48
Конечно я не против! Комментарии, пожелания и критика приветствуются! Напоминаю, что репозиторий ждёт ваших форков:

https://github.com/denisshevchenko/ohaskell.guide
3
3 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 8
05.04.2016, 10:24
Слышал что JavaScript это Haskell + Category theory
0
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
05.04.2016, 10:36
Да? Мне не приходилось такое слышать. Что касается Haskell, то теория категорий вообще необязательна для программирования на нём.
0
Модератор
 Аватар для Curry
5164 / 3523 / 536
Регистрация: 01.06.2013
Сообщений: 7,674
Записей в блоге: 9
05.04.2016, 13:54
.......
0
3 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 8
05.04.2016, 20:24
слышал от Douglas Crockford в обсуждении JS Monads https://www.youtube.com/watch?v=dkZFtimgAcM на 10:35 минуте. Наверно я не правильно понял, что он имеет в виду.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.04.2016, 20:24

хочу чтобы одмены относились к людям по-человечески
хочу чтобы одмены относились к людям по-человечески

Как по-человечески свернуть программу в трей при ее запуске?
Приветствую! Использую Lazarus 2.0.6. Вот код создания формы: procedure TfmCer_Downloader_1_1.FormCreate(Sender: TObject); ...

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

КАК по человечески организовать поддерживаемую связь апплет-сервлет-база
Всем привет! Нужно написать апплет, который соединяется с базой ОДИН РАЗ и через сервлет вытаскивает из базы результаты запросов. При...

Человечески ftp mirror из командной строки есть?, Не нашел чем зеркалить.
здравствуй многоуважаемый Олл. Озадачился уёб дизайном, и тут-же огреб проблему. Знаю 2 зеркальщика: lftp и mirrordir но оба не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru