module Pandora.Paradigm.Structure.Ability.Zipper where import Pandora.Core.Functor (type (:::)) import Pandora.Paradigm.Structure.Ability.Morphable (Morphable, Morph (Rotate)) type family Zipper (structure :: * -> *) (moves :: k) = (result :: * -> *) | result -> structure type family Fastenable structure rs where Fastenable structure (r ::: rs) = (Morphable (Rotate r) structure, Fastenable structure rs) Fastenable structure r = Morphable (Rotate r) structure