halves-0.1.0.0: src/Data/Halves/Tuple.hs
module Data.Halves.Tuple (
tuple4
, tuple8
) where
import Control.Lens
-- >>> (((), True), ("three", 'f')) ^. tuple4
-- ((),True,"three",'f')
-- >>> ((), True, "three", 'f') ^. from tuple4
-- (((),True),("three",'f'))
tuple4 ::
Iso' ((a, b), (c, d)) (a, b, c, d)
tuple4 =
iso f g
where
f ((a, b), (c, d)) =
(a, b, c, d)
g (a, b, c, d) =
((a, b), (c, d))
-- >>> (((), True, "three", 'f'), ('a', False, "x", ())) ^. tuple8
-- ((),True,"three",'f','a',False,"x",())
tuple8 ::
Iso' ((a, b, c, d), (e, f, g, h)) (a, b, c, d, e, f, g, h)
tuple8 =
iso f g
where
f ((a, b, c, d), (e, f', g', h)) =
(a, b, c, d, e, f', g', h)
g (a, b, c, d, e, f', g', h) =
((a, b, c, d), (e, f', g', h))