Lösningsförslag till KS 2010 i funktionell programmeing (Haskell)

```fkn :: [a] -> [a] -> [a]
fkn [] _ = []
fkn _ [] = []
fkn (x:xs) (y:ys) = (x:y:fkn xs ys)

*Main> fkn [1,3,5] [2,4,6]
[1,2,3,4,5,6]

*Main> fkn [1,3,5] [2]
[1,2]
```
```truefalse :: [Bool]
truefalse = True : False : truefalse
```
```vartannat [] = []
vartannat [x] = [x]
vartannat (x1:x2:xs) = x1:(vartannat xs)
```
```data TMap a = Leaf a
| Children [TMap a]
deriving Show

t1 = Children [Children [Leaf 1, Leaf 2], Leaf 3]

tmap funk (Leaf a) = Leaf (funk a)
tmap funk (Children [a]) = Children [tmap funk a]
tmap funk (Children [a,b]) = Children [tmap funk a, tmap funk b]
```
```both f1 f2 xs = filter f1 (filter f2 xs)
```
```data HElem = IE Int
| FE Float
| RE Rational
deriving (Show, Eq)

tal = [IE 17, FE 1.0, RE 1.2, IE 23]

baraheltal [] = []
baraheltal ((IE tal):xs) =  tal : (baraheltal xs)
baraheltal (_:xs) = baraheltal xs

red_ut tallista = ordning tallista ([],[],[])

ordning [] svar = svar
ordning ((IE tal):xs) (a,b,c) = ordning xs (a ++ [tal], b,c)
ordning ((FE tal):xs) (a,b,c) = ordning xs (a, b ++ [tal],c)
ordning ((RE tal):xs) (a,b,c) = ordning xs (a, b, c ++ [tal])
```