Не надо так, лучше попытайся что-то реализовать. Основные инструменты на вскидку - это StateT/MonadState, ReaderT/MonadReader, MonadIO. Из классов - Functor, Applicative, Monad, Foldable, Traversable, Semigroup/Monoid. Ну и структуры данных [], Map, vector:Data.Vector