haskell-notes

тельно.

• 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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162