Look at the types of (:), take, and drop. You want to concat lists, not append an element to the head of a list. I would recommend looking at the concat operator (++). Haskell is all about the types! take returns a list, as does drop. So you need some function of type [a] -> [a] -> [a], not a -> [a] -> [a].