separated-0.1.0: A data type with elements separated by values

Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Separated.FlipSeparated

Synopsis

Documentation

data FlipSeparated a s Source

Instances

Bifunctor FlipSeparated 
Functor (FlipSeparated a)

Map across a FlipSeparated on the separator values.

fmap id (x :: FlipSeparated Int String) == x
fmap (+1) (a +. b +. fempty) == (1+a) +. b +. fempty
Monoid s => Applicative (FlipSeparated s)

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
[]
>>> (\s -> [s, reverse s, drop 1 s]) +. [1,2] +. fempty <*> "abc" +. [3,4,5] +. fempty
[["abc","cba","bc"],[1,2,3,4,5]]
Semigroup a => Apply (FlipSeparated a)

Applies functions with separator values, using a zipping operation, appending elements.

>>> (fempty :: FlipSeparated [Int] (String -> [String])) <.> fempty
[]
>>> (\s -> [s, reverse s, drop 1 s]) +. [1,2] +. fempty <.> "abc" +. [3,4,5] +. fempty
[["abc","cba","bc"],[1,2,3,4,5]]
(Eq a, Eq s) => Eq (FlipSeparated a s) 
(Ord a, Ord s) => Ord (FlipSeparated a s) 
(Show s, Show a) => Show (FlipSeparated s a) 
Monoid (FlipSeparated s a) 
Semigroup (FlipSeparated s a) 
type FlipSeparatedConsF FlipSeparated 
type FlipSeparatedConsG FlipSeparated 

flipSeparated :: Iso (Separated s a) (Separated t b) (FlipSeparated a s) (FlipSeparated b t) Source

The isomorphism to a Separator.

>>> empty ^. flipSeparated
[]
>>> ('x' +: 6 +: empty) ^. flipSeparated
['x',6]
>>> [] ^. separated . flipSeparated
[]
>>> [(6, [])] ^. separated . flipSeparated
[6,[]]

flipSeparated1 :: Iso (Separated1 a s) (Separated1 b t) (FlipSeparated1 s a) (FlipSeparated1 t b) Source

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]