| Copyright | (c) 2018-2021 Kowainik | 
|---|---|
| License | MIT | 
| Maintainer | Kowainik <xrom.xkov@gmail.com> | 
| Stability | Experimental | 
| Portability | Portable | 
| Safe Haskell | Safe | 
| Language | Haskell2010 | 
Relude.Extra.Tuple
Description
Contains utility functions for working with tuples.
Since: 0.4.0
Synopsis
- dup :: a -> (a, a)
 - toFst :: (a -> b) -> a -> (b, a)
 - toSnd :: (a -> b) -> a -> (a, b)
 - fmapToFst :: Functor f => (a -> b) -> f a -> f (b, a)
 - fmapToSnd :: Functor f => (a -> b) -> f a -> f (a, b)
 - mapToFst :: (a -> b) -> a -> (b, a)
 - mapToSnd :: (a -> b) -> a -> (a, b)
 - traverseToFst :: Functor t => (a -> t b) -> a -> t (b, a)
 - traverseToSnd :: Functor t => (a -> t b) -> a -> t (a, b)
 - traverseBoth :: Applicative t => (a -> t b) -> (a, a) -> t (b, b)
 
Documentation
Creates a tuple by pairing something with itself.
>>>dup "foo"("foo","foo")>>>dup ()((),())
Since: 0.6.0.0
toFst :: (a -> b) -> a -> (b, a) Source #
Apply a function, with the result in the fst slot, and the value in the other.
A dual to toSnd.
>>>toFst length [3, 1, 0, 2](4,[3,1,0,2])>>>toFst (+5) 10(15,10)
Since: 0.7.0.0
toSnd :: (a -> b) -> a -> (a, b) Source #
Apply a function, with the result in the snd slot, and the value in the other.
A dual to toFst.
>>>toSnd length [3, 1, 0, 2]([3,1,0,2],4)>>>toSnd (+5) 10(10,15)
Since: 0.7.0.0
traverseToFst :: Functor t => (a -> t b) -> a -> t (b, a) Source #
Apply a function that returns a value inside of a functor, with the output in the first slot, the input in the second, and the entire tuple inside the functor.
A dual to traverseToSnd
>>>traverseToFst (Just . (+1)) 10Just (11,10)>>>traverseToFst (const Nothing) 10Nothing
Since: 0.5.0
traverseToSnd :: Functor t => (a -> t b) -> a -> t (a, b) Source #
Apply a function that returns a value inside of a functor, with the output in the second slot, the input in the first, and the entire tuple inside the functor.
A dual to traverseToFst.
>>>traverseToSnd (Just . (+1)) 10Just (10,11)>>>traverseToSnd (const Nothing) 10Nothing
Since: 0.5.0
traverseBoth :: Applicative t => (a -> t b) -> (a, a) -> t (b, b) Source #
Maps a function that returns a value inside of an applicative functor over both elements of a tuple, with the entire tuple inside the applicative functor.
>>>traverseBoth (Just . ("Hello " <>)) ("Alice", "Bob")Just ("Hello Alice","Hello Bob")>>>traverseBoth (const Nothing) ("Alice", "Bob")Nothing