Testování, optimalizace, dokumentace

Testování

Testování nám pomáhá ověřovat funkčnost programu a tak se v něm zbavovat chyb. Pro jednotkové testování (testování modulů, funkcí) máme v Haskellu modul HUnit (dokumentace), pro automatické generování testů QuickCheck (dokumentace, příklady v knize Real World Haskell).

Optimalizace

Pokud zjistíme, že náš program nefunguje dostatečně rychle, jak by měl, můžeme ho prověřit pomocí tzv. profileru, který dokáže najít slabá místa v programu. V Haskellu nám k tomu slouží GHC Profiler. Častým problémem je vytváření tzv. space leaku (hromadění paměti v důsledku nevyhodnoceného líného kódu), čemuž může pomoci přidání striktnosti (např. přes operátor $!). Podrobný popis se nachází v knize Real World Haskell.

Dokumentace

Dokumentace k programu může ulehčit orientaci v našem kódu jiným lidem, případně i nám samotným, když se k němu vrátíme po dlouhé době. V Haskellu slouží ke generování dokumentace program Haddock. Jestliže náš kód obsahuje více dokumentace než samotného kódu, vyplatí se nám použít dokumentované programování v Haskellu, výstup pak můžeme přeložit do dalších formátů přes sázecí systém LaTeX. Pro zjišťování informací o pokrytí kódu můžeme použít nástroj HPC (příklad použití).

Příklad dokumentovaného kódu

\documentclass{article}

\begin{document}
In Bird-style you have to leave a blank before the code.

\begin{verbatim}

> main :: IO ()
> main = print $ fact 10

> fact :: Integer -> Integer
> fact 0 = 1
> fact n = n * fact (n-1)

\end{verbatim}

And you have to leave a blank line after the code as well.
\end{document}

← IB016