Why higher-kinded polymorphism is vital functional abstraction and How to implement type classes with Golang
Higher-kinded types helps to implement polymorphic containers, shared libraries, compatibility and harness testing. Golang does not support higher-kinded types, where a type is abstracted over some other type. The defunctionalization technique transforms higher-kinded type expressions into nullary kind. The post explains how to build a lightweight higher-kinded polymorphism using standard Golang notation with help of defunctionalization.