úÎ$í!‹&      !"#$%None+Map the first function over internal nodes ! and the second one over leaves. &GTODO: Use lazy text builder to avoid slowness in the pessimistic case. Parse the enamex forest. Parse the enamex file. '()*+,-./& '()*+,-./& Safe-Inferred An - is the atomic label with additional marker. Inside marker Beginning marker A  consists of a list of atomic  labels. An 8 data structure consists of a word with a corresponding  compound label. 'Encode the forest with the IOB method. 0&Encode the tree using the IOB method. (Decode the forest using the IOB method. 10Take iob elements as long as the top label doesn' t change. 5 Return obtained part together with the rest of iob.  234567 0 1     234567 0 1 Safe-Inferred Spanning of a tree. -Map function over each tree from the forest. Make span for a leaf node. +Minimum span overlapping both input spans. &Set of positions covered by the span. %Get span of the span-annotated tree. :Annotate tree nodes with spanning info given the function ' which assignes indices to leaf nodes. *Annotate forest nodes with spanning info. 'Remove span annotations from the tree. )Remove span annotations from the forest. -Sort the tree with respect to spanning info. /Sort the forest with respect to spanning info. 4Combine the disjoint forest with the list of words. 0 Discontinuities will be patched with no trace.      Safe-Inferred8%A stateful monad for forest pruning.  A graph. !7Make a graph from a list of (key, value, [children keys] ) tuples. "Get node with the given key. #3Get keys of adjacent nodes for the given node key. $5Return all graph roots (i.e. nodes with no parents). %BSpanning-like forest of a DAG. Trees in the resulting forest are H disjoint with respect to their ranges. It is not checked if the input  graph is actually a DAG. 89: !"#$;<=>?@%A  !"#$%  !"#$%89: !"#$;<=>?@%AB        !"#$%&'()*+,-./0123456789::;<=>?@ABCdata-named-0.2.0Text.Named.EnamexData.Named.IOBData.Named.TreeData.Named.GraphmapTwo parseForest parseEnamexAtomIBLabelIOBwordlabel encodeForest decodeForestSpanbegendmapTreesleafSpan<>spanSetspanspanTree spanForest unSpanTree unSpanForestsortTree sortForestaddWordsGraphnodeMapedgeMapmkGraphnodeedgesrootsdisjointForestunEscapeForestTreepForestpTreepLeafpNodepOpenTag pCloseTagpWord encodeTree followToppushpopMaybetopMaybepoprawisIRanMrunRanMgenerateruncontainsincludechopprune $fMonadRanM