úÎix     0non-portable (MPTCs and functional dependencies) experimentalross@soi.city.ac.ukIFinger trees with element type a", annotated with measures of type v. ' The operations enforce the constraint  v a. Things that can be measured.  !"#$%View of the right end of a sequence. *the sequence minus the rightmost element,  and the rightmost element empty sequence $View of the left end of a sequence. .leftmost element and the rest of the sequence empty sequence %&'( Like )$, but with a more constrained type. *+, Like -$, but with a more constrained type. ./0 O(1). The empty sequence. O(1). A singleton sequence. O(n)4. Create a sequence from a finite list of elements. O(1)0. Add an element to the left end of a sequence. A Mnemonic: a triangle with the single element at the pointy end. 1O(1)1. Add an element to the right end of a sequence. A Mnemonic: a triangle with the single element at the pointy end. 2O(1). Is this the empty sequence? O(1)&. Analyse the left end of a sequence. 34O(1)'. Analyse the right end of a sequence. 567O(log(min(n1,n2))). Concatenate two sequences. 89:;<=>?@AO(log(min(i,n-i)))2. Split a sequence at a point where the predicate ) on the accumulated measure changes from B to C. DEFGHIO(n). The reverse of a sequence. JKL     M      !"#$%&'()*+,-./*0123456789:;<=>?@ABCDEFGHFGIJKLMNOPQRSfingertree-0.0Data.FingerTree FingerTreeMeasuredmeasureViewR:>EmptyRViewL:<EmptyLfmap' traverse'empty singletonfromList<||>nullviewlviewr><split takeUntil dropUntilreverseSplitDeepSingleEmptyNodeNode3Node2DigitFourThreeTwoOnenode2node3 nodeToDigitdeepbaseGHC.BasefmapmapTreemapNodemapDigitData.Traversabletraverse traverseTree traverseNode traverseDigit consDigit snocDigit lheadDigit ltailDigit rheadDigit rtailDigit digitToTree appendTree0 addDigits0 appendTree1 addDigits1 appendTree2 addDigits2 appendTree3 addDigits3 appendTree4 addDigits4ghc-primGHC.BoolFalseTrue splitTree mappendValdeepLdeepR splitNode splitDigit reverseTree reverseNode reverseDigit