Skip to content

Instantly share code, notes, and snippets.

@blouerat
Last active August 29, 2015 14:01
Show Gist options
  • Save blouerat/d45fde24ca8147f67841 to your computer and use it in GitHub Desktop.
Save blouerat/d45fde24ca8147f67841 to your computer and use it in GitHub Desktop.
1HaskellADay: interleaveSwapped
import Control.Applicative
import Data.Tuple
{- Yesterday, we appended swapped values:
Example
> appendSwapped [(1,2),(2,3)]
[(1,2),(2,3),(2,1),(3,2)]
-}
appendSwapped :: [(a,a)] -> [(a,a)]
appendSwapped = (++) <*> map swap
{- Today, we'll interleave them:
Example
> interleaveSwapped [(1,2),(2,3)]
[(1,2),(2,1),(2,3),(3,2)]
-}
interleaveSwapped :: [(a,a)] -> [(a,a)]
interleaveSwapped = concatMap $ appendSwapped . pure
interleaveSwapped' :: [(a,a)] -> [(a,a)]
interleaveSwapped' = concatMap $ (:) <*> pure . swap
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment