Добро пожаловать в руководство пользователя GHC
Содержание:
-
5. Использование GHCi
- 5.1. Введение в GHCi
- 5.2. Загрузка исходных файлов
- 5.3. Загрузка скомпилированного кода
-
5.4. Интерактивная оценка в командной строке
- 5.4.1. Действия ввода-вывода в командной строке
- 5.4.2. Использование
doв командной строке - 5.4.3. Многострочный ввод
- 5.4.4. Объявления типов, классов и другие
- 5.4.5. Что действительно в области видимости в командной строке?
- 5.4.6. Команды
:mainи:run - 5.4.7. Переменная
it - 5.4.8. Автоподстановка типов в GHCi
- 5.4.9. Использование пользовательской интерактивной функции вывода
- 5.4.10. Стек-трейсы в GHCi
- 5.5. Отладчик GHCi
- 5.6. Вызов GHCi
- 5.7. Команды GHCi
-
5.8. Команды
:setи:seti -
5.9. Файлы
.ghciи.haskeline - 5.10. Компиляция в объектный код внутри GHCi
- 5.11. Запуск интерпретатора в отдельном процессе
- 5.12. Запуск интерпретатора на другом хосте
- 5.13. Часто задаваемые вопросы и моменты, на которые следует обратить внимание
- 6. Использование runghc
-
7. Использование GHC
- 7.1. Использование GHC
- 7.2. Предупреждения и проверки на корректность
- 7.3. Оптимизация (улучшение кода)
- 7.4. Использование Concurrent Haskell
- 7.5. Использование SMP-параллелизма
-
7.6. Справочник по флагам
- 7.6.1. Опции подробности
- 7.6.2. Альтернативные режимы работы
- 7.6.3. Какие фазы запустить
- 7.6.4. Перенаправление вывода
- 7.6.5. Сохранение промежуточных файлов
- 7.6.6. Временные файлы
- 7.6.7. Поиск импортов
- 7.6.8. Опции файла интерфейса
- 7.6.9. Проверка повторной компиляции
- 7.6.10. Опции интерактивного режима
- 7.6.11. Пакеты
- 7.6.12. Опции языка
- 7.6.13. Предупреждения
- 7.6.14. Уровни оптимизации
- 7.6.15. Отдельные оптимизации
- 7.6.16. Опции профилирования
- 7.6.17. Опции покрытия программы
- 7.6.18. Опции препроцессора C
- 7.6.19. Опции генерации кода
- 7.6.20. Опции компоновки
- 7.6.21. Опции плагинов
- 7.6.22. Замена фаз
- 7.6.23. Принудительное назначение опций конкретным фазам
- 7.6.24. Платформенно-специфичные опции
- 7.6.25. Опции отладки компилятора
- 7.6.26. Разные опции компилятора
-
7.7. Запуск скомпилированной программы
- 7.7.1. Установка опций RTS
- 7.7.2. Разные опции RTS
- 7.7.3. Опции RTS для управления сборщиком мусора
- 7.7.4. Опции RTS для создания статистических данных выполнения
- 7.7.5. Опции RTS для конкуретности и параллелизма
- 7.7.6. Опции RTS для профилирования
- 7.7.7. Трассировка
- 7.7.8. Опции RTS для хакеров, отладчиков и слишком любопытных
- 7.7.9. Получение информации о RTS
-
7.8. Имена файлов и отдельная компиляция
- 7.8.1. Файлы исходного кода Haskell
- 7.8.2. Файлы вывода
- 7.8.3. Путь поиска
- 7.8.4. Перенаправление вывода компиляции
- 7.8.5. Сохранение промежуточных файлов
- 7.8.6. Перенаправление временных файлов
- 7.8.7. Другие параметры, относящиеся к файлам интерфейса
- 7.8.8. Параметры, относящиеся к расширенным файлам интерфейса
- 7.8.9. Проверка повторной компиляции
- 7.8.10. Как компилировать взаимно рекурсивные модули
- 7.8.11. Подписи модулей
- 7.8.12. Использование
make - 7.8.13. Генерация зависимостей
- 7.8.14. Модули-сироты и объявления экземпляров
-
7.9. Пакеты
- 7.9.1. Использование пакетов
- 7.9.2. Пакет
main - 7.9.3. Последствия использования пакетов для языка Haskell
- 7.9.4. Уточнение и переименование модулей
- 7.9.5. Базы данных пакетов
- 7.9.6. Идентификаторы установленных пакетов, зависимости и сломанные пакеты
- 7.9.7. Управление пакетами (команда
ghc-pkg) - 7.9.8. Сборка пакета из исходного кода Haskell
- 7.9.9.
InstalledPackageInfo: спецификация пакета
- 7.10. ГЕНЕРАТОРЫ ГЕНЕРАТОРОВ ГХ
-
7.11. Параметры, связанные с конкретной фазой
- 7.11.1. Замена программы для одной или нескольких фаз
- 7.11.2. Принудительное применение параметров к конкретной фазе
- 7.11.3. Параметры, влияющие на препроцессор C
- 7.11.4. Параметры, влияющие на препроцессор Haskell
- 7.11.5. Параметры, влияющие на генерацию кода
- 7.11.6. Параметры, влияющие на компоновку
- 7.12. Использование динамических библиотек
- 7.13. Отладка компилятора
-
7.8. Имена файлов и отдельная компиляция
-
8. Профилирование
- 8.1. Центры затрат и стеки центров затрат
- 8.2. Параметры компилятора для профилирования
- 8.3. Профилирование времени и распределения
- 8.4. Профилирование использования памяти
-
8.5.
hp2ps– Вывод профилей кучи в PostScript - 8.6. Профилирование параллельных и конкурентных программ
- 8.7. Наблюдение за покрытием кода
- 8.8. Использование профилирования «ticky-ticky» (для разработчиков)
- 9. Советы по: sooner, faster, smaller, thriftier
-
10. Возможности языка GHC
- 10.1. Параметры языка
- 10.2. Неупакованные типы и примитивные операции
-
10.3. Синтаксические расширения
- 10.3.1. Синтаксис Unicode
- 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.6. Расширения механизма «вывода»
- 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. Типически-индексированные GADTs
- 10.11.14. Типовые семейства высшего ранга
- 10.11.15. Ограничения в типах
- 10.11.16. Тип
Type - 10.11.17. Вывод зависимости в объявлениях типов данных
- 10.11.18. Вывод зависимости в пользовательских
forall - 10.11.19. По умолчанию типы без поликинд
- 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. Шаблоны Haskell
- 10.28. Стрелочная нотация
- 10.29. Паттерны bang и Строгий 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. Безопасный Haskell
-
10.32. Директивы
-
11. Интерфейс внешних функций (FFI)
- 11.1. Различия GHC в главе FFI
- 11.2. Расширения GHC для главы FFI
- 11.3. Использование FFI с GHC
-
12. Расширение и использование GHC как библиотеки
- 12.1. Аннотации исходного кода
- 12.2. Использование GHC как библиотеки
-
12.3. Плагины компилятора
- 12.3.1. Использование плагинов компилятора
- 12.3.2. Создание плагинов компилятора
- 12.3.3. Плагины ядра более подробно
- 12.3.4. Плагины типизатора
- 12.3.5. Плагины исходного кода
- 12.3.6. Плагины для подгонки дырок
- 12.3.7. Управление перекомпиляцией
- 12.3.8. Плагины фронтенда
- 12.3.9. Плагины флагов DynFlags
- 13. Что делать, если что-то пошло не так
- 14. Отладка скомпилированных программ
- 15. Другие утилиты Haskell
- 16. Запуск GHC на Win32 системах
-
17. Известные ошибки и недостатки
-
17.1. Стандарты Haskell против Glasgow Haskell: несоответствие языка
-
17.1.1. Отклонение от Haskell 98 и Haskell 2010
- 17.1.1.1. Лексический синтаксис
- 17.1.1.2. Контекстно-свободный синтаксис
- 17.1.1.3. Выражения и шаблоны
- 17.1.1.4. Объявления и привязки
- 17.1.1.5. Проверка типов рекурсивных групп привязок
- 17.1.1.6. По умолчанию заголовки модулей с -main-is
- 17.1.1.7. Система модулей и файлы интерфейса
- 17.1.1.8. Числа, базовые типы и встроенные классы
- 17.1.1.9. Поддержка в
Prelude - 17.1.1.10. Интерфейс внешних функций
- 17.1.1.11. Разделы операторов
- 17.1.2. Интерпретация GHC неопределённого поведения в Haskell 98 и Haskell 2010
-
17.1.1. Отклонение от Haskell 98 и Haskell 2010
- 17.2. Известные ошибки или недостатки
-
17.1. Стандарты Haskell против Glasgow Haskell: несоответствие языка
- 18. Форматы журналов событий
- 19. Уход и содержание вашего руководства пользователя GHC
© 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/index.html