> Haskell has typeclasses which would probably correspond to structural typing in Scala.
Nah, typeclasses are nominative typing but added post-facto (you can define a typeclass instance for a third party's type). Typeclasses are similar to Scala's traits I think (I don't know if you can add traits to a library's types though).
Functor f => (a -> b) -> f a -> f b
Defines map for any type that implements the type class functor. Lots of types will implement functor and it is easy to implement it yourself.