While learning some advanced topics of the Haskell type system, I found type level programming is reminiscent of logic programming.
For example, Fun with Functional Dependencies shows how to implement insertion sort using functional dependencies in a programming style similar to Prolog. Fun with Type Functions also shows a similar example using type families.
This similarity is not a coincidence because of the correspondence between a logic system and a type system, which is known as Curry-Howard isomorphism.
Lesson: Learn Prolog to be a better Haskell programmer!
There is a discussion on the Haskell-cafe.