What concepts relatively unique to Haskell are powerful, widely applicable, and not mentioned in most introductory texts? (By "relatively unique to Haskell" I mean maybe they're part of Lisp or Scheme, but not, say, Java.)
Some of the concepts important to Haskell, such as lambda expressions and recursion, are also present in more popular languages. Many others, though, either have no equivalent in (most) other languages, or else are very unlike the equivalent:
types, classes and kinds
higher-order functions
evaluation
partial application
tail recursion
laziness
currying
pattern matching
application and composition operations
contexts
functors, applicatives, monads
monad transformers
lenses
:def macros
arrows
continuation passing style
software transactional memory
Most of those topics appear to be covered by introductory texts, but the last five are not. I found each of them by accident, and each kind of blew my mind. They all strike me as powerful, widely applicable, and obscure.
Are there others?