úÎYdV      Safe-Inferred6=K.Prepend a value to a separated-like structure. Safe-Inferred6=KCThe isomorphism to a list of pairs of element and separator values.separated # empty[]separated # ('x' +: 6 +: empty) [('x',6)][] ^. separated[][(6, [])] ^. separated[6,[]]@The isomorphism to element values interspersed with a separator.separated1 # (single 6)(6,[])#separated1 # (5 +: 'x' +: single 6) (5,['x',6])(6, empty) ^. separated1[6](5, 'x' +- 6) ^. separated1 [5,'x',6]"A lens on the first element value.single 7 ^. separated1Head7(single x ^. separated1Head == (x :: Int) A lens on the tail.9(d +: e +: single x) ^. separated1Tail == e +: x +: empty One element and one separator. 7 +- "abc" [7,"abc"]7 +: "abc" +: 8 +- "def"[7,"abc",8,"def"] 2Zero element values interspersed with one element.single 4[4]#single x ^. separated1Tail == empty GThe isomorphism that shuffles the elements and separators one position.shift # ([], 6)[6]shift # ([(5, 'x')], 6) [5,'x',6]single 6 ^. shift([],6)(5 +: 'x' +: single 6) ^. shift ([(5,'x')],6):The isomorphism that swaps elements with their separators.separatedSwap # empty[]#separatedSwap # ('x' +: 6 +: empty)[6,'x']empty ^. separatedSwap[]$('x' +: 6 +: empty) ^. separatedSwap[6,'x']`Append two lists of separated values to produce a list of pairs of separator and element values.single 7 .++. single 'a'[7,'a']a +: single 7 .++. single b [a,7,b]!a +: (b .++. c) == (a +: b) *+: cgAppend element values interspersed with a separator to a list of pairs of separator and element values.empty ++. single 7[7]empty ++. 6 +: 'x' +: single 7 [6,'x',7]%'w' +: empty ++. 6 +: 'x' +: single 7 ['w',6,'x',7]gAppend a list of pairs of separator and element values to element values interspersed with a separator.single 7 .++ empty[7]single 6 .++ 'x' +: 7 +: empty [6,'x',7]%'w' +: single 6 .++ 'x' +: 7 +: empty ['w',6,'x',7]¸Applies functions with separator values, using a zipping operation, appending elements. The identity operation is an infinite list of the empty element and the given separator value.G[1,2] +: reverse +: [3,4] +: empty <*> [5,6,7] +: "abc" +: [8] +: empty[[1,2,5,6,7],"cba",[3,4,8]]XApplies functions with separator values, using a zipping operation, appending elements.G[1,2] +: reverse +: [3,4] +: empty <.> [5,6,7] +: "abc" +: [8] +: empty[[1,2,5,6,7],"cba",[3,4,8]] Map across a  Separated1 on the separator values.Kfmap (+1) (set separated1Tail (1 +: 'b' +: 2 +: 'c' +: empty) (single 'a'))['a',2,'b',3,'c'])fmap id (x :: Separated1 Int String) == x fmap (+1) (single x) == single x¸Applies functions with element values, using a zipping operation, appending separators. The identity operation is an infinite list of the empty separator and the given element value.9(empty :: Separated [Int] (String -> [String])) <*> empty[]P[1,2] +: (\s -> [s, reverse s, drop 1 s]) +: empty <*> [3,4,5] +: "abc" +: empty [[1,2,3,4,5],["abc","cba","bc"]]XApplies functions with element values, using a zipping operation, appending separators.9(empty :: Separated [Int] (String -> [String])) <.> empty[]P[1,2] +: (\s -> [s, reverse s, drop 1 s]) +: empty <.> [3,4,5] +: "abc" +: empty [[1,2,3,4,5],["abc","cba","bc"]] Map across a  Separated on the element values.(fmap id (x :: Separated Int String) == x2fmap (+1) (a +: b +: empty) == a +: (1+b) +: empty" ! "#$%&'()*+,-    ! "#$%&'()*+,- Safe-Inferred6=K.Prepend a value to a separated-like structure. Safe-Inferred6=KThe isomorphism to a  Separator.empty ^. flipSeparated[]$('x' +: 6 +: empty) ^. flipSeparated['x',6][] ^. separated . flipSeparated[]&[(6, [])] ^. separated . flipSeparated[6,[]]The isomorphism to a  Separated1.single 6 ^. flipSeparated1[6]((5 +: 'x' +: single 6) ^. flipSeparated1 [5,'x',6](6 +: empty) ^. flipSeparated1[6]*(5 +: 'x' +: 6 +: empty) ^. flipSeparated1 [5,'x',6].¸Applies functions with element values, using a zipping operation, appending separators. The identity operation is an infinite list of the empty separator and the given element value.Rfmap toUpper +. [3,4] +. reverse +. fempty <*> "abc" +. [5,6,7] +. "def" +. fempty["ABC",[3,4,5,6,7],"fed"]/XApplies functions with element values, using a zipping operation, appending separators.Rfmap toUpper +. [3,4] +. reverse +. fempty <.> "abc" +. [5,6,7] +. "def" +. fempty["ABC",[3,4,5,6,7],"fed"]0¸Applies functions with separator values, using a zipping operation, appending elements. The identity operation is an infinite list of the empty element and the given separator value.?(fempty :: FlipSeparated [Int] (String -> [String])) <*> fempty[]R(\s -> [s, reverse s, drop 1 s]) +. [1,2] +. fempty <*> "abc" +. [3,4,5] +. fempty [["abc","cba","bc"],[1,2,3,4,5]]1XApplies functions with separator values, using a zipping operation, appending elements.?(fempty :: FlipSeparated [Int] (String -> [String])) <.> fempty[]R(\s -> [s, reverse s, drop 1 s]) +. [1,2] +. fempty <.> "abc" +. [3,4,5] +. fempty [["abc","cba","bc"],[1,2,3,4,5]]2 Map across a  FlipSeparated on the separator values.,fmap id (x :: FlipSeparated Int String) == x4fmap (+1) (a +. b +. fempty) == (1+a) +. b +. fempty345678./9:;<=>012?345678./9:;<=>012? Safe-Inferred @      !"#$%  &'()*+,-./01234567789:;<=>?@ABseparated-0.1.0Data.Separated.SeparatedConsData.Separated.Separated Data.Separated.FlipSeparatedConsData.Separated.FlipSeparatedData.Separated SeparatedConsSeparatedConsFSeparatedConsG+: Separated1 Separated separated separated1separated1Headseparated1Tailempty+-singleshift separatedSwap.++.++..++FlipSeparatedConsFlipSeparatedConsFFlipSeparatedConsG+. FlipSeparated flipSeparatedfemptyflipSeparated1$fApplicativeSeparated1$fApplySeparated1$fFunctorSeparated1$fApplicativeSeparated$fApplySeparated$fFunctorSeparated showSeparated separatedAp separated1Ap swapSeparated"$fSeparatedConsSeparatedSeparated1$fShowSeparated1$fBifunctorSeparated1"$fSeparatedConsSeparated1Separated$fMonoidSeparated$fSemigroupSeparated$fShowSeparated$fBifunctorSeparated$fApplicativeFlipSeparated1$fApplyFlipSeparated1$fApplicativeFlipSeparated$fApplyFlipSeparated$fFunctorFlipSeparatedFlipSeparated1flipSeparated1Ap.$fFlipSeparatedConsFlipSeparatedFlipSeparated1$fShowFlipSeparated1$fFunctorFlipSeparated1$fBifunctorFlipSeparated1.$fFlipSeparatedConsFlipSeparated1FlipSeparated$fMonoidFlipSeparated$fSemigroupFlipSeparated$fShowFlipSeparated$fBifunctorFlipSeparated