Libs with Interfaces & Abstractions

I really liked this talk:

about learning Haskell.

About 10 minutes in, the presenter groups Haskell libs into 2.

  1. opaque libraries which only expose interfaces
  2. abstraction + interface libraries. I.e. libraries which expose a non-trivial extraction (for a learner) within their interface

The issue he says with learning Haskell is that if you need to learn how to use many libraries you need to often grok the correspoinding abstractions also.

I really liked this observation. But I wonder why? Is this mainly a Haskell feature or do other languages use this also, but more implicitly…