ФП 2 2016/Кирилл/Install Haskell

Материал из SEWiki
Перейти к: навигация, поиск

High-Level Overview

Компилятор Хаскеля называется GHC. Нам понадобится работающий компилятор версии 8.0.1.

Помимо базового компилятора, мы будем использовать (как минимум) вот эти пакеты:

В общем-то, мне без разницы, каким образом вы сделаете, чтобы это всё у вас заработало, ниже я просто предлагаю более-менее надежный вариант.

В случае каких-то проблем, напишите мне как можно скорее, а то сидеть на паре в понедельник без интерпретатора, мне кажется, вам будет грустно.


Установка с помощью stack

Поставьте stack

Stack это новомодный способ управлять используемой версией GHC и дополнительными пакетами.

Установите stack, следуя официальной инструкции. Лучше всего, наверное, воспользоваться готовым пакетом для менеджера пакетов вашей ОС, но, вообще говоря, там можно скачать и просто бинарник, положить его куда угодно и оттуда запускать.

Настройте stack

Для этого надо создать файл ~/.stack/global-project/stack.yaml (по дороге придется создать директории) и написать туда такой текст:

resolver: nightly-2016-09-20
packages: []

Проверьте версию компилятора

Выполните команду stack ghc -- --version. В первый раз это займет некоторое время, поскольку всё будет скачиваться.

Где-то в начале должно быть написано:

Using resolver: nightly-2016-09-20 from implicit global project's config file

(Если не написано, то вы положили конфиг куда-то не туда или написали в него что-то не то.)

Заканчиваться всё должно строкой:

The Glorious Glasgow Haskell Compilation System, version 8.0.1

Установите пакеты

Выполните команду stack install mtl exceptions.

Проверка работоспособности

Запустите интерпретатор GHCi:

  • Если ставили через stack, то: stack ghci --no-build.
  • Если не через stack, то просто: ghci.

Должно появиться приглашение интерпретатора. Проверьте, что версия GHCi, действительно, 8.0.1.

Напишите туда import Control.Monad.State. Если не прилетела ошибка, то всё хорошо, выйдите командой :quit и проведите остаток дня гордясь собой.