тельно.
• Rinus Plasmeijer and Marko van Eekelen. Functional Programming and Parallel Graph Rewriting.
В этой книге исследуются вопросы распараллеливания функциональных программ, построение ком-
пиляторов для функциональных языков.
Литература | 321
Теория категорий
Две очень хорошие книги для начинающих:
• Maarten M. Fokkinga. Gentle Introduction to Category Theory.
Также где-то в сети есть и перевод на русский.
• Steve Awodey. Category Theory.
• Eugenia Cheng, Simon Willerton aka TheCatsters. Курс видео-лекций на youtube.
http://www.scss.tcd.ie/Edsko.de.Vries/ct/catsters/linear.php
http://www.youtube.com/user/TheCatsters
Статьи по категориальным типам:
• Varmo Vene. Categorical Programming with Inductive and Coinductive Types. Phd-диссертация.
• Erik Meijer, Graham Hutton. Bananas in Space: Extending Fold and Unfold to Exponential Types.
• Martin Erwig. Categorical Programming with Abstract Data Types.
• Martin Erwig. Metamorphic Programming: Structured Recursion for Abstract Data Types.
Практика
• Conal Elliott. Denotational design with type class morphisms.
• Johan Tibell. High Performance Haskell. Слайды с выступления.
• Johan Tibel. Faster persistent data structures through hashing. Слайды с выступления.
• Simon Marlow. Parallel and Concurrent Programming in Haskell.
• Edward Z. Yang. Блог о Haskell в картинках. Много полезной информации о лени и устройстве ghc.
• Oleg Kiselyov. Блог в том числе и о Haskell. Много решений интересных и нетривиальных задач. http:
//okmij.org/ftp/
Как работает GHC
• Документация GHC:
http://hackage.haskell.org/trac/ghc/wiki/Commentary
• Don Stewart. Multi-paradigm Just-In-Time Compilation. BS Thesis, 2002.
Автор пробует компилировать Haskell-код в Java-код. При этом очень доступно объясняеются внутрен-
ности STG.
• Simon Marlow, Simon Peyton Jones. The Glasgow Haskell Compiler. The Architecture of Open Source
Application, Volume 2, 2012.
• Simon Marlow, Simon Peyton Jones. Making a Fast Curry: Push/Enter vs. Eval/Apply for Higher-order
Languages. ICFP’04.
• Simon Peyton Jones. Implementing lazy functional languages on stock hardware: the Spineless Tagless G-
machine.
• Simon Marlow, Tim Harris, Roshan P. James, Simon Peyton Jones. Parallel Generational-Copying Garbage
Collection with a Block-Structured Heap. ISMM’08.
• Simon Peyton Jones, Andre Santos. A transformation-based optimizer for Haskell. Science of computer
programming, 1998.
322 | Приложения
• Simon Peyton Jones, John Launchbury. Unboxed values as first citizens in a non-strict functional programming
language. 1991.
• Simon Marlow, Simon Peyton Jones. Secrets of Glasgow Haskell Compiler inliner. 1999
Статья о тонкостях реализации прагмы INLINE.
• Simon Peyton Jones, Andrew Tolmach, Tony Hoare. Playing by the Rules, ICFP 2001
Статья о прагме RULES.
Встроенные проблемно-ориентированные языки (EDSL)
• Oleg Kiselyov. Implementing Explicit and Finding Implicit Sharing in EDSLs.
Чистое решение проблемы поиска дублирующих подвыражений.
• Andy Gill. Type-Safe Observable Sharing in Haskell.
Решение проблемы поиска дублирующих подвыражений с помощью расширения GHC, позволяющего
проводить сравнение термов по указателям.
• Conal Elliott, Sigbjorn Finne, Oege de Moor. Compiling Embedded Languages.
Отчёт о построении EDSL для анимации.
• Bruno C.d.S. Oliveira, Andres Loh. Abstract Syntax Graphs for Domain Specific Languages.
Применение графов для кодирования дублирующих подвыражений в EDSL.
• Jacques Carette, Oleg Kiselyov and Chung-chieh Shan. Finally Tagless, Partially Evaluated. Tagless Staged
Interpreters for Simpler Typed Languages.
Построение расширяемого синтаксиса с помощью классов типов.
• Wouter Sweistra. Data types a la carte.
Построение расширяемых типов. В этой статье и выше под словом “расширяемый” понимается возмож-
ность добавления к типу новых конструкторов без перекомпиляции старых.
И все-все-все
Если вдруг у вас возникли вопросы по Haskell, и рядом с вами не оказалось того, кто мог бы на них
ответить, и в книгах нет ответа, вы можете спросить у сообщества Haskell, в haskell-cafe, там вам быстро и с
радостью ответят:
http://www.haskell.org/mailman/listinfo/haskell-cafe
Сообщество Haskell славится радушием и терпимостью к начинающим. Там много информации о выпус-
ках новых библиотек, конференциях, обучающих программах и просто разговоры о том-о-сём.
Также стоит отметить журнал Monad.Reader:
http://themonadreader.wordpress.com/
Литература | 323
Обзор Hackage
Число пакетов, загруженных на Hackage, уже перевалило за 2000. В Hackage легко заблудиться. Очень
часто не разберёшься какой из пакетов выбрать. К тому же многие из них заброшены или просто не подходят
для использования в серьёзных приложениях. Но среди них есть и очень хорошие пакеты. Некоторые из них
включены в Haskell Platform. Ниже приведён тематический обзор наиболее популярных пакетов.
Стандартные библиотеки
Все приведённые в этом подразделе библиотеки включены в Haskell Platform.
Полный список библиотек для Haskell Platform можно посмотреть на сайте http://lambda.haskell.
org/hp-tmp/docs.
• Начало-всех-начал: base