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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено через 23 часа 53 минуты
И сразу, по горячим следам, добавлена глава про не менее полезный трансформер WriterT.
1
80 / 40 / 0
Регистрация: 18.03.2014
Сообщений: 26
21.05.2014, 18:31 27
Ну и для полноты картины, глава про ещё более мощный трансформер StateT.
1
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
22.05.2014, 16:02 28
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 29
Цитата Сообщение от 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 30
Рад сообщить, что теперь книга стала ещё ближе к обучающимся. В конце каждой главы, содержащей примеры кода, вас ждут две новые кнопки:

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

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

ЗЫ и все это можно без труда найти в свободном доступе в сети.
2
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 30
23.09.2014, 22:41 33
И уже не сильно по-человечески: одни действительно умные коллеги с научного форума подкинули следующую ссылку -
Код
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 34
Добрый день! Сообщаю участникам форума, что у нас родилось русскоязычное сообщество Haskell-разработчиков. Цель - собрать воедино всех Хаскелистов рунета в единое блоговое пространства, для обмена премудростями.

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

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

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

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

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

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

Указатели и адреса: может кто-нибудь нормально по-человечески эту тему объяснить?
Добрый вечер. Читаю вот книгу по Липманну и ничего не понимаю из этих слов, может кто нормально...

"Сообщение отправлено" по-человечески
Нуждаюсь в помощи. Имеется обыкновенная форма обратной связи, которую обрабатывает send.php и он...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C#
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru