APP-Notes

DAG 1 - Setting up

Introductie in Haskell

In het boek wordt er een introductie gegeven over Haskell. Er wordt beschreven wat de taal probeert te bereiken en hoe de taal ontstaan is.

Static-typed

Haskell is een static-typed programmeertaal. Zelf ben ik erg fan van static-typed talen. Ik denk dat dit de leesbaarheid erg bevordert en dat de code hier duidelijker van wordt. In sommige gevallen betekent dit wel dat er meer code geschreven moet worden om een bepaald doel te bereiken, maar ook dat de code vaker werkt als bedacht en dat er minder runtime-errors optreden.

Pure functies

Omdat Haskell functies puur zijn, is concurrency een stuk makkelijker dan in talen zoals Java of C#. Het feit dat een functie puur is, wil zeggen dat de functie geen side-effects heeft. Een functie heeft een of meerdere input(s) en een output. Tijdens het uitvoeren van de functie wordt er niets gedaan om de state van het systeem te veranderen (launching missiles).

Naast concurrency zou testen ook een stuk makkelijker moeten zijn. Omdat er in Haskell geen objecten bestaan, hoeft er ook niets gemockt te worden. Er hoeft enkel getest te worden op input en output. Hoe dit zich gaat vertalen in code en of dit echt zo goed werkt, zal ik in de loop der tijd gaan ondervinden. Hierover later in deze blog meer dus.

Immutability

Haskell is immutable. Dit betekent dat alles constanten zijn. Wanneer een object aangepast moet worden, is de enige optie om een nieuwe instantie van het object terug te geven met hierin de wijziging. Ook dit draagt bij aan de puurheid van functies. Er is geen risico’s dat een functie een object aanpast die op een andere plek gedefinieerd is.

Geschiedenis

Vroeger, voor de tijd van computers is er een wiskundig systeem bedacht genaamd ‘lambda calculus’. Het lambda teken (λ) zien we ook terugkomen in het logo van Haskell. In 1958 is LISP bedacht. Hierop volgend is in 1970 ML bedacht, beide gebaseerd op het lambda calculur principe. In de loop der tijd zijn er nog meer van dit soort talen bedacht. Er waren veel verschillende onderzoekers onderzoek aan het doen met behulp van veel verschillende talen. Omdat het niet handig was dat iedereen in een andere taal werkte, is er een commite gevormd. Samen hebben zij in 1990 Haskell 1.0 uitgebracht. Haskell is vernoemd naar de wetenschapper Haskell Brooks Curry.

Resources

Voor vragen of libraries kan ik bij meerdere bronnen terecht. De bronnen waar ik veel gebruik van ga maken zijn:

Installatie van omgeving

Haskell heeft meerdere implementaties. ‘Hugs’ wordt veel gebruikt voor onderwijs, terwijl de ‘Glasgow Haskell Compiler’ (GHC) gebruikt wordt voor normale applicaties. GHC is dan ook de compiler die ik ga gebruiken. Op het moment van schrijven is de versie van GHC 8.2.2.

GHC bestaat uit 3 componenten: