úÎ3÷1Í'      !"#$%&to be determined.highly unstable)Stephen Tetley <stephen.tetley@gmail.com>*'()'Convert a join list to a regular list. 'Build a join list from a regular list. Create an empty join list. Create a singleton join list. /Cons an element to the front of the join list. .Snoc an element to the tail of the join list. 8Catenate two join lists. Unlike (++) on regular lists, ; catenation on join lists is (relatively) cheap hence the  name  join list. =An alias for (++) that does not cause a name clash with the  Prelude. =Extract the first element of a join list - i.e. the leftmost ? element of the left spine. An error is thrown if the list is  empty. <This function performs a traversal down the left spine, so  unlike head2 on regular lists this function is not performed  in constant time. =Extract the last element of a join list - i.e. the rightmost @ element of the right spine. An error is thrown if the list is  empty. BExtract the elements after the head of a list. An error is thrown  if the list is empty. AExtract all the elements except the last one. An error is thrown  if the list is empty. #Test whether a join list is empty. (Concatenate a join list of join lists. Get the length of a join list. !Map a function over a join list. "Build a join list of n elements. :Repeatedly build a join list by catenating the seed list. =A generalized fold, where each constructor has an operation. &Right-associative fold of a JoinList. %Left-associative fold of a JoinList. "unfoldl is permitted due to cheap snoc-ing. unfoldr - the usual unfoldr opertation. #Access the left end of a sequence. <Unlike the corresponing operation on Data.Sequence this is = not a cheap operation, the joinlist must be traversed down + the left spine to find the leftmost node. :Also the traversal may involve changing the shape of the  underlying binary tree. %Access the rightt end of a sequence. <Unlike the corresponing operation on Data.Sequence this is = not a cheap operation, the joinlist must be traversed down - the right spine to find the rightmost node. :Also the traversal may involve changing the shape of the  underlying binary tree. !Take the left n elements of the list. Implemented with $ hence the same performance caveats  apply. "Take the right n elements of the list. Implemented with  $ hence the same performance caveats  apply. #Drop the left n elements of the list. Implemented with $ hence the same performance caveats  apply. $Drop the right n elements of the list. Implemented with  $ hence the same performance caveats  apply. %/This function should be considered deprecated.  cross zip, - zip a join list against a regular list, > maintaining the shape of the join list provided the lengths  of the lists match. &/This function should be considered deprecated. 7Generalized cross zip - c.f. zipWith on regular lists. '  !"#$%&'  !"#$%&'  !"#$%&*      !"#$%&'()*+,joinlist-0.3.0 Data.JoinListViewR:>EmptyRViewL:<EmptyLJoinListtoListfromListempty singletonconssnoc++joinheadlasttailinitnullconcatlengthmapreverse replicaterepeatedgfoldfoldrfoldlunfoldlunfoldrviewlviewrtakeLeft takeRightdropLeft dropRightxzipxzipWith:++:SingleEmpty