https://dorchard.wordpress.com/2011/10/18/subcategories-in-haskell-exofunctors/
Требует GHC 7.6
(10x
nponeccop)
{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE TypeFamilies #-} import qualified Data.Set as Set class ExoFunctor f where type SubCat f x :: Constraint fmap :: (SubCat f a, SubCat f b) => (a -> b) -> f a -> f b instance ExoFunctor Set.Set where type SubCat Set.Set x = Ord x fmap = Set.map instance ExoFunctor [] where type SubCat [] a = () fmap = map
Требует GHC 7.6
(10x
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)