Skip to content

Instantly share code, notes, and snippets.

@arnar
Created February 1, 2012 16:06
Show Gist options
  • Save arnar/1717737 to your computer and use it in GitHub Desktop.
Save arnar/1717737 to your computer and use it in GitHub Desktop.
Generate all interleavings in two lists (Haskell)
interleave :: [a] -> [a] -> [[a]]
interleave [] [] = []
interleave as [] = [as]
interleave [] bs = [bs]
interleave as bs = [ (head as):arest | arest <- interleave (tail as) bs ]
++ [ (head bs):brest | brest <- interleave as (tail bs) ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment