{-# LANGUAGE TypeOperators #-}moduleData.Rope.Annotation(MonoidalAnn(..),PackableAnn(..),BreakableAnn(..))whereimportData.Rope(Rope)classMonoidalAnnfwhere-- | build an empty 'Annotation'emptyAnn::fa-- | append two annotations, based on their corresponding ropesappendAnn::Rope->fa->Rope->fb->fcclassMonoidalAnnf=>PackableAnnfwhere-- | construct an 'Annotation' from a 'Rope' out of whole clothpackAnn::Rope->fa-- | The 'Rope' has been updated to contains n more bytes on the right than the one used to build the 'Annotation', update the 'Annotation'snocAnn::Int->Rope->fa->fb-- | The 'Rope' contains n more bytes on the left than the one used to build the 'Annotation', update the 'Annotation'consAnn::Int->Rope->fa->fbclassBreakableAnnfwhere-- | split an 'Annotation' about a 'Rope' into two annotations, one about the first n bytes, the other about the remaindersplitAtAnn::Int->Rope->fa->(fb,fc)-- | truncate the 'Annotation' to 'length' ntakeAnn::Int->Rope->fa->fb-- | drop the first n bytes from the 'Annotation'dropAnn::Int->Rope->fa->fbtakeAnnnr=fst.splitAtAnnnrdropAnnnr=snd.splitAtAnnnr