module Data.Abstract where import Control.Lens type family Abstract a class HasAbstract a where abstract :: Lens' a (Abstract a) default abstract :: IsAbstract a => Lens' a (Abstract a) abstract = abstracted class IsAbstract a where abstracted :: Iso' a (Abstract a)