Functioneel programmeren
7 belangrijke vragen over Functioneel programmeren
Hoe wordt in Haskell de iteratie over de elementen van een lijst worden bereikt
Haskell heeft hiervoor een iteratieve expressie, namelijk de list comprehension. Bijvoorbeeld:
[n+1|n<-ns]
Als ns de lijst [2,3,4,6,8] is dan zorgt deze list comprehension heeft de lijst [3,4,5,7,9]
Leg aan de hand van een voorbeeld uit hoe patroonherkenning in Haskell toegepast wordt
Zie de volgende Haskell type definitie:
data Shape = Pointy | Circular Float | Rectangular(Float, Float)
En de volgende functie:
area :: DShape->Float
-- area s computes the area of shape s
area Pointy = 0.0
area (Circular r) = pi*r*r
area (Rectangular(h, w)) = h*w
Afhankelijk van de shape wordt de juiste berekening uitgevoerd.
Leg uit wat currying inhoudt. Leg uit wat een hogere-orde functie is en geef hiervan voorbeelden
Een gecurryde functie is een functie met meer dan 1 parameter. Bij een functieaanroep wordt de functie eerst toegepast op het eerste argument. Het resultaat levert een nieuwe functie op met een parameter minder. De verkregen functie wordt toegepast op het volgende argument, enzovoort.
Een hogere orde functie heeft 1 of meerdere functies als invoer en/of de functie levert een functie als uitvoer.
Bijvoorbeeld de functie map.
- Hogere cijfers + sneller leren
- Niets twee keer studeren
- 100% zeker alles onthouden
Leg uit wat lazy evalutie is en omschrijf het nut ervan
Lazy evaluation is een techniek waarbij de evaluatie van een functie argumenten uitgevoerd wordt als ze nodig zijn. Dit zorgt ervoor dat je infinite lists kunt gebruiken, aangezien het laatste element van de lijst niet gebruikt wordt.
Het voordeel van lazy evaluatie is dat je de control kunt scheiden van de berekening
Noem de drie vormen van genericiteit in Haskell
Geef aan wat het nut is van typeklassen
Een typeklasse is een groep typen waarop een bepaalde operator kan worden toegepast. Overloading is mogelijk dankzij het bestaan van typeklassen. Een overloading functie kan op een aantal verschillende typen werken. De operator + werkt bijvoorbeeld op de numerieke typen Int, Integer, Float, FDouble en Ratio. Deze numerieke typen vormen samen bijvoorbeeld de klasse Num. De operator + is een operator van klasse Num en is gedefinieerd op alle typen van deze klasse. Dit komt tot uiting in de typespecificatie van de operator +:
(+) :: Num a => a->a->a
Omschrijf hoe de status in Haskell gemoduleerd kan worden
In Haskell is een action een abstracte entity die effect heeft op een status verandering evenals een result produceren. Acties kunnen sequentieel gecomposeerd worden en we kunnen het effect van het uitvoeren van een sequence van acties voorspellen. (We kunnen niet de volgorde voorspellen , maar ddat maakt niet uit, want Haskell heeft geen side-effecten).
Acties zijn first-class waarden en kunnen daarom doorgegeven worden als argumenten, berekend worden als functie resultaat en ingebouwd worden in samengestelde waarden. IO t is het type van een actie die die input/output verzorgt en heeft een result van type t.
De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:
- Een unieke studie- en oefentool
- Nooit meer iets twee keer studeren
- Haal de cijfers waar je op hoopt
- 100% zeker alles onthouden