This might work well, but we decided to go with something less tedious for http://haskellbook.com/ , which we did, we explained what had changed, and show them how you could approve the type based on the list.
Prelude> :t length length :: Foldable t => ta -> Int Prelude> :t length :: [a] -> Int length :: [a] -> Int
Meanwhile, with the types indicated in the examples and exercises, this was enough, and if they accidentally encounter a type with Foldable in it, this does not cause problems, because we told them how everything changed.
Forcing them to import things and not bother to tell them what happened seems fragile because they are embarrassed if they go off a happy journey.
source share