takeTwo :: [a] -> [a]
splitUp :: (a -> Bool) -> [a] -> ([a],[a])De aanroep splitUp even [1..10] moet het paar van lijsten ([2,4,6,8,10],[1,3,5,7,9]) opleveren.
sum :: Num a => [a] -> aSchrijf hiervan je eigen versie mySum.
symmetricR :: [(a,a)] -> Bool
reflexiveR :: [a] -> [(a,a)] -> Bool
transitiveR :: [(a,a)] -> Bool
equivalenceR :: [a] -> [(a,a)] -> Bool
NB: vanaf hier zijn de vragen bonusvragen.
list2charfct :: Eq a => [a] -> [(a,a)] -> a -> a -> Bool charfct2list :: [a] -> (a -> a -> Bool) -> [(a,a)]Het eerste lijst-argument van charfct2list geeft het domein aan. Hier zijn een paar voorbeelden van aanroepen:
Main> list2charfct [(1,2),(3,4)] 1 3 False Main> list2charfct [(1,2),(3,4)] 3 4 True Main> charfct2list [1..5] (<) [(1,2),(1,3),(1,4),(1,5),(2,3),(2,4),(2,5),(3,4),(3,5),(4,5)]
charfct2pairfct :: (a -> a -> Bool) -> (a,a) -> Bool pairfct2charfct :: ((a,a) -> Bool) -> a -> a -> Bool
natPairs :: [(Integer,Integer)] natPairs = [ (x,z-x) | z <- [0..], x <- [0..z] ]
Huiswerk
Tekstbestand met alle antwoorden. Let op: de laatste drie vragen zijn bonusvragen. Deadline: maandag 18 mei, 12 uur 's middags. Per email inleveren bij Martijn van Steenbergen, met een cc naar Jan van Eijck.