10. Возможности языка GHC
- 10.1. Параметры языка
- 10.2. Неупакованные типы и примитивные операции
-
10.3. Синтаксические расширения
- 10.3.1. Синтаксис Юникода
- 10.3.2. Магический хэш
- 10.3.3. Отрицательные литералы
- 10.3.4. Целые литералы, похожие на дробные
- 10.3.5. Двоичные целые литералы
- 10.3.6. Шестнадцатеричные литералы с плавающей точкой
- 10.3.7. Подчеркивания в числовых литералах
- 10.3.8. Защиты шаблонов
- 10.3.9. Шаблоны представлений
- 10.3.10. Шаблоны n+k
- 10.3.11. Рекурсивный do-оператор
- 10.3.12. Прикладной do-оператор
- 10.3.13. Параллельные списочные включения
- 10.3.14. Обобщенные (похожие на SQL) списочные включения
- 10.3.15. Включения монады
- 10.3.16. Новый механизм дезугаризации монодического отказа
- 10.3.17. Перепривязываемый синтаксис и неявный импорт Prelude
- 10.3.18. Постфиксные операторы
- 10.3.19. Разделы кортежей
- 10.3.20. Lambda-case
- 10.3.21. Пустые альтернативы case
- 10.3.22. Многосторонние выражения if
- 10.3.23. Локальные объявления фиктивности
- 10.3.24. Расширения импорта и экспорта
- 10.3.25. Более либеральный синтаксис для аргументов функций
- 10.3.26. Резюме по похищенному синтаксису
-
10.4. Расширения типов данных и синонимов типов
- 10.4.1. Типы данных без конструкторов
- 10.4.2. Контексты типов данных
- 10.4.3. Инфиксные конструкторы типов, классы и переменные типов
- 10.4.4. Операторы типов
- 10.4.5. Либерализованные синонимы типов
- 10.4.6. Существующие квантифицированные конструкторы данных
- 10.4.7. Объявление типов данных с явными подписями конструкторов
- 10.4.8. Обобщенные алгебраические типы данных (GADTs)
- 10.5. Расширения системы записей
-
10.6. Расширения механизма «производящих» объявлений
- 10.6.1. Производящие экземпляры для пустых типов данных
- 10.6.2. Выведенный контекст для производящих объявлений
- 10.6.3. Самостоятельные производящие объявления
-
10.6.4. Производящие экземпляры дополнительных классов (
Data, и т. д.) - 10.6.5. Обобщенные производящие экземпляры для newtypes
- 10.6.6. Производящие объявления любого другого класса
- 10.6.7. Стратегии вывода
- 10.6.8. Вывод через
- 10.7. Синонимы шаблонов
-
10.8. Объявления классов и экземпляров
- 10.8.1. Объявления классов
- 10.8.2. Функциональные зависимости
-
10.8.3. Объявления экземпляров
- 10.8.3.1. Разрешение экземпляров
- 10.8.3.2. Смягченные правила для заголовка экземпляра
- 10.8.3.3. Смягченные правила для контекстов экземпляров
- 10.8.3.4. Правила завершения экземпляров
- 10.8.3.5. Неразрешимые экземпляры
- 10.8.3.6. Перекрывающиеся экземпляры
- 10.8.3.7. Подписи экземпляров: типы сигнатур в объявлениях экземпляров
- 10.8.4. Перегруженные строковые литералы
- 10.8.5. Перегруженные метки
- 10.8.6. Перегруженные списки
- 10.8.7. Неразрешимые (или рекурсивные) надклассы
- 10.9. Семьи типов
- 10.10. Продвижение типов данных
-
10.11. Полиморфизм видов
- 10.11.1. Обзор полиморфизма видов
- 10.11.2. Обзор типа-в-типе
- 10.11.3. Принципы вывода видов
- 10.11.4. Вывод порядка переменных в объявлении типа/класса
- 10.11.5. Полные пользовательские подписи видов и полиморфизм рекурсии
- 10.11.6. Автономные подписи видов и полиморфизм рекурсии
- 10.11.7. Автономные подписи видов и заголовки объявлений
- 10.11.8. Вывод видов в закрытых семействах типов
- 10.11.9. Вывод видов в объявлениях инстансов классов
- 10.11.10. Вывод видов в подписях типов
- 10.11.11. Явное квантификация видов
- 10.11.12. Неявное квантификация в синонимах типов и инстансах семейств типов
- 10.11.13. Индексированные видами GADТ
- 10.11.14. Виды высшего ранга
- 10.11.15. Ограничения в видах
- 10.11.16. Вид
Type - 10.11.17. Вывод зависимостей в объявлениях типов данных
- 10.11.18. Вывод зависимостей в пользовательских
forall - 10.11.19. Вывод видов по умолчанию без
PolyKinds - 10.11.20. Красивый вывод в присутствии полиморфизма видов
- 10.12. Полиморфизм лёгкости
- 10.13. Литералы на уровне типов
- 10.14. Ограничения равенства, Coercible и ограничение вида
- 10.15. Квантифицированные ограничения
- 10.16. Расширения типов сигнатур
- 10.17. Лексически ограниченные переменные типов
- 10.18. Связывания и обобщение
- 10.19. Видимое применение типа
- 10.20. Неявные параметры
- 10.21. Полиморфизм произвольного ранга
- 10.22. Импредикативный полиморфизм
- 10.23. Типизированные дыры
- 10.24. Частичные типы подписей
- 10.25. Пользовательские ошибки компиляции
- 10.26. Отсрочка ошибок типов до выполнения
- 10.27. Template Haskell
- 10.28. Стрелочная нотация
- 10.29. Шаблоны bang и Strict Haskell
- 10.30. Утверждения
- 10.31. Статические указатели
-
10.32. Директивы
- 10.32.1. Директива
LANGUAGE - 10.32.2. Директива
OPTIONS_GHC - 10.32.3. Директива
INCLUDE - 10.32.4. Директивы
WARNINGиDEPRECATED - 10.32.5. Директива
MINIMAL -
10.32.6. Директивы
INLINEиNOINLINE - 10.32.7. Директива
LINE - 10.32.8. Директива
COLUMN - 10.32.9. Директива
RULES -
10.32.10. Директива
SPECIALIZE - 10.32.11. Директива
SPECIALIZEэкземпляра - 10.32.12. Директива
UNPACK - 10.32.13. Директива
NOUNPACK - 10.32.14. Директива
SOURCE - 10.32.15. Директивы
COMPLETE - 10.32.16. Директивы
OVERLAPPING,OVERLAPPABLE,OVERLAPSиINCOHERENT
- 10.32.1. Директива
-
10.33. Правила переписывания
- 10.33.1. Синтаксис
- 10.33.2. Семантика
- 10.33.3. Взаимодействие правил с директивами
INLINE/NOINLINE - 10.33.4. Взаимодействие правил с директивами
CONLIKE - 10.33.5. Взаимодействие правил с методами класса
- 10.33.6. Слияние списков
- 10.33.7. Специализация
- 10.33.8. Управление процессом в правилах переписывания
- 10.34. Специальные встроенные функции
- 10.35. Обобщенные классы
- 10.36. Обобщенное программирование
- 10.37. Роли
- 10.38. HasCallStack
- 10.39. Конкурентный и параллельный Haskell
- 10.40. Safe Haskell
© 2002–2007 The University Court of the University of Glasgow. All rights reserved.
Licensed under the Glasgow Haskell Compiler License.
https://downloads.haskell.org/~ghc/8.10.2/docs/html/users_guide/lang.html