This project is really easy. I've already done it. Here are the first two functions, and the output of main:
subst :: Eq t => t -> t -> [t] -> [t]
subst pat rep l = go l []
where
go [] acc = acc
go (x:xs) acc = v : go xs acc
where
v = if x == pat then rep else x
interleave :: [t] -> [t] -> [t]
interleave a b = go a b [] False
where
go [] l2 acc _ = acc ++ l2
go l1 [] acc _ = acc ++ l1
go (x:xs) (y:ys) acc False = x : go xs (y:ys) acc True
go (x:xs) (y:ys) acc True = y : go (x:xs) ys acc False
main = do
print $ subst 0 1 [0,1,2,3]
print $ subst 'e' 'o' "dog"
print $ subst 'e' 'o' "elephant"
print $ interleave [1,2,3,4] [11,12,13,14]
print $ interleave "" "dog"
print $ interleave "wl" "arus"
print $ interleave "tlpone" "eeh"
print $ unroll 3 [1,2,3,4,5]
print $ unroll 8 [1,2,3]
print $ unroll 4 "ski"
------------------------------------------
[1,1,2,3]
"dog"
"olophant"
[1,11,2,12,3,13,4,14]
"dog"
"walrus"
"telephone"
[1,2,3]
[1,2,3,1,2,3,1,2]
"skis"