Haskell Hero

Interaktivní učebnice pro začínající Haskellisty

Začínáme

O funkcionálním programování obecně

Co je funkcionální program?

Funkcionální program je výraz. Tento výraz se v průběhu výpočtu zjednodušuje až na nezjednodušitelný tvar.

Takovým výrazem může být například 5 + 3, což se výpočtem zjednoduší na nezjednodušitelný výraz 8. Více v kapitole Výrazy.

Co je funkcionální paradigma?

Paradigma je myšlenkový postup, jak ze zadání dostat výsledek. Nám bude stačit vědět, že místo toho jak dostat výsledek nás bude zajímat co je výsledkem. Smysl tohoto tvrzení plně pochopíte, až si funkcionální programování trošku osaháte.

Proč funkcionální programování?

Díky tomu, že potřebujeme do programu napsat pouze co bude výsledkem, jsou zdrojové kódy funkcionálních programů často i několikrát kratší než je tomu u jazyků jako je Pascal, C++ nebo Java. To s sebou nese ale i potřebu více abstraktního myšlení.

Co je Haskell?

Haskell je funkcionální programovací jazyk, se kterým budeme pracovat.

Interpret / kompilátor

Abychom mohli začít prozkoumávat taje Haskellu, potřebujeme prostředí, ve kterém si budeme naše programy zkoušet. Můžeme si vybrat buďto nějaký interpret nebo kompilátor.

  • Interpret je program, který při každém spuštění našeho kódu tento kód načte, přeloží a provede.
  • Kompilátor je program, který kód jednou načte, jednou přeloží a vytvoří spustitelný soubor, který se při každém spuštění pouze provede.

Místo spuštění kódu si můžeme představit, že se chceme dívat na divadelní představení.

  • Interpret nás v tomto případě vezme do divadla, kde domluví, aby nám bylo představení odehráno.
  • Naproti tomu kompilátor půjde do divadla za nás, domluví odehrání představení a nahraje jej na videokameru. Pak nám předá nosič se záznamem představení a my se na něj můžeme dívat kolikrát chceme.

V této učebnici budeme pracovat s interpretem zvaným Hugs.

Instalujeme Hugs

Na fakultních strojích s Linuxem je spuštění Hugsu jednoduché. Otevřeme si terminál a napíšeme do něj hugs. Pokud terminál zahlásí, že modul Hugs neexistuje, přidáme jej příkazem module add hugs a poté spustíme Hugs příkazem hugs.

Pokud si budete chtít procvičovat Haskell i na svém osobním počítači (což vřele doporučuji), na stránkách Hugsu najdete instalační soubory jak na Windows, tak na Linux.

Při instalování na Windows Vista a Windows 7 si dejte pozor, abyste instalační soubor spustili s administrátorskými právy (kliknout pravým myšítkem na stažený instalační soubor a zvolit Run as administrator, česky Spustit jako správce).

Pro vyzkoušení funkcionálního programování existuje i webový interpret, který umí vyhodnocovat jednoduché výrazy. Později nám ale jeho možnosti přestanou stačit a bude nevyhnutelné nainstalovat Hugs.

První krůčky v Hugsu

Do Hugsu budeme zadávat dva typy požadavků na zpracování, a to povely a výrazy.

Povely jsou speciální příkazy, kterými říkáme interpretu, aby něco provedl. Všechny povely, které Hugs umí provést si zobrazíme přímo v Hugsu jednoduchým povelem. Napíšeme :? a stiskneme Enter. Z těchto povelů nám prozatím bude stačit :quit, kterým Hugsu řekneme, aby se ukončil. Pro tento povel existuje i jeho kratší varianta, a to :q.

O výrazech si začneme povídat v jedné z následujících lekcí.