Eindelijk ben ik eens begonnen met serieus wat tijd in functioneel programmeren te steken. Hoewel ik niet kan zeggen dat ik het al helemaal begrijp is het tot op heden erg cool!
Mijn eigen experimenten hebben me onder andere de volgende code opgeleverd (dit doet verder nog niks nuttigs, het zijn slechts beginnersstapjes)
dit geeft in ghci de volgende resultaten:
Zoals je kan zien geeft de functie intersection alleen de waarden terug die in beide lists voorkomen. Maar hoe zou ik een functie kunnen schrijven die een list returnt met de waarden die maar in een van beide lists voorkomt? Niet dat dit een perse heel handige functie, maar het is gewoon uit beginners interesse dat ik deze vraag stel.
Volgens mij moet ik meerdere list comprehensions met elkaar combineren, maar ik zie zo 123 niet hoe ik dt moet doen.
Mijn eigen experimenten hebben me onder andere de volgende code opgeleverd (dit doet verder nog niks nuttigs, het zijn slechts beginnersstapjes)
code:
1
2
3
| modList xs m = [x | x <- xs, x `mod` m == 0] intersect xs ys = [x | x <- xs, y <- ys, x == y] |
dit geeft in ghci de volgende resultaten:
code:
1
2
3
4
5
6
7
8
9
| *Main> let list3 = modList [0..100] 3 *Main> let list5 = modList [0..100] 5 *Main> let intersection = intersect list3 list5 *Main> list3 [0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99] *Main> list5 [0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100] *Main> intersection [0,15,30,45,60,75,90] |
Zoals je kan zien geeft de functie intersection alleen de waarden terug die in beide lists voorkomen. Maar hoe zou ik een functie kunnen schrijven die een list returnt met de waarden die maar in een van beide lists voorkomt? Niet dat dit een perse heel handige functie, maar het is gewoon uit beginners interesse dat ik deze vraag stel.
Volgens mij moet ik meerdere list comprehensions met elkaar combineren, maar ik zie zo 123 niet hoe ik dt moet doen.