Rozpoczynanie pracy z Haskellem

W tym semestrze zaczął mi sie nowy przedmiot - Języki i Pardygmaty Programowania, gdzie na początku uczymy się Haskella. Poniżej kilka zasobów, aby zacząć szybko w nim programować.

Zaczniemy od tego aby zainstalować kompilator GHC z oficjalnego repozytorium. Jeśli nie pracujesz pod Ubuntu, to odwiedź stronę Glasgow Haskell Compiler > Download.

sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:hvr/ghc
apt update
apt install ghc-7.10.3

I moglibyśmy już teraz korzystać z kompilatora oraz konsoli interaktywnej ghci.

Ale nie jest to super wygodne. Ja jestem zwolennikiem pracy w lekkim IDE - np. Visual Studio Code. Daje nam to przegląd plików, kolorowanie składni, dostęp do terminala, czyli wszystko co potrzeba w jednym miejscu.

Następnie zainstalujemy Stack, czyli coś jak npm dla Haskella (menadżer paczek i projektów).

curl -sSL https://get.haskellstack.org/ | sh

Używając tego narzędzia zaczniemy się przyzwyczajać do pewnej struktury projektów, jaka jest częsta w projektach Haskellowych.

Następnie posłużymy się tym o to poradnikiem o konfiguracji swojego środowiska, aby zainstalować odpowiednie biblioteki i dodatek do VS Code.

# install VS Code
# install Haskell IDE Engine

git clone https://github.com/haskell/haskell-ide-engine
cd haskell-ide-engine
stack install

# install will take a while (you need at least 4GB of RAM)
# open VS Code

code

# install 'haskell language server' VS Code extension

Następnie utworzymy nasz pierwszy projekt. Aby to zrobić musimy podejrzeć plik stack.yaml i odczytać wartość resolver. Użyjemy jej jako szablon dla naszych projektów. Chodzi tu o to, że Stack pracuje na ‘snapshotach’, czyli zbiorach paczek, które w danych wersjach na pewno ze sobą współpracują.

stack new --resolver=nightly-2018-02-26 <my project name>
cd <my project name>
stack setup

# Open VS Code in this folder

code .

I możemy zacząć pracować! Na stronie Learn You a Haskell for Great Good! znajdziemy podręcznik nauki Haskella.

VS Code z hie i GHCi