HKT

  • higher-kinded types, 型を受け取って型を返す型
  • 具体: 値 ex. 0
  • 抽象0: 具体型(proper type) ex. Int
  • 抽象1: 型パラメータを持つ型, first-order type: ex. List<T>
    • Array<T>: * -> *
    • Map<K, V>: * -> * -> *
    • 抽象2: 型パラメータを持つジェネリックな型 ex. F<T>
    • Mappable<F<_>>: (* -> *) -> *

Haskell

例: Functor

class Functor f where
   fmap :: (a -> b) -> f a -> f b

f: * -> *

HKT Encoding

参考文献