Закончил, между делом, единственный пока он-лайн курс по Haskell FP101x. Как для человека, который уже почти всё там знает, курс просто прекрасный:) Для новичков наверняка будут трудности, связанные с освоением монад, но тут, по собственному опыту знаю, нужно время, чтобы к ним привыкнуть. Однако, чтобы получить сертификат об окончании, монады можно и пропустить. Надо сделать всего лишь 60% заданий и авторы накидали много таких, где монады не используются.
Основная книга, по которой всё читается, Graham Hutton "Programming in Haskell"( в сети есть pdf). Пару больших упражнений взято оттуда, остальные команда Мейера, надо полагать, сама выдумала. Так как университетский курс по книге читается уже много лет, то в сети есть и решения к книжным упражнениям, что для любителей читинга делает задачу прохождения курса вообще элементарной.
Честно говоря, один раз к читингу прибегнул и я, когда в предпоследней лабораторной работе надо было построить управление параллельным выполнением задач (concurrency) с помощью продолжений (continuations). Эти continuations ещё хуже монад. Начали их использовать ещё в Лиспе для программирования исключений и уже там написали горы руководств в попытке объяснить, что это такое. Многие всё равно не поняли. Тут же всю эту тему попытались уложить в небольшую лабораторную работу. Народ на форуме честно признавался: благодаря тому, что авторы типы функций дали, построить сами функции можно, но понять, что они делают, мало у кого получилось.
Вот и я, проделал 24 из 26 заданий, а последний шаг никак не давался. И обидно ведь, всё равно что угадал все буквы, но не смог назвать слово. Пришлось найти оригинальную статью про "poor man's concurrency" и подсмотреть. Оказалось, что настолько простой и прямолинейный шаг надо было сделать, основанный на элементарном паттерн-матчинге, что авторам и не пришло в голову дать какую-то подсказку, хотя до этого они щедро их раздавали. Так что теперь у меня не 98% выполнения заданий, а 99%.
Что несколько раздражало в упражнениях к курсу, так это необходимость набивать код из них вручную. Эрик Мейер решил, что студентам надо упражнять мышечную память и дал весь код в виде картинок, а не текста, чтобы без копипастинга обходились.