Skip to content

Instantly share code, notes, and snippets.

@CIAvash
Created January 10, 2017 19:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CIAvash/a02ea4c1c52ae8d483add1984d42f352 to your computer and use it in GitHub Desktop.
Save CIAvash/a02ea4c1c52ae8d483add1984d42f352 to your computer and use it in GitHub Desktop.
Intersperse function in Perl 6 and Haskell
intersperse :: a -> [a] -> [a]
intersperse _ [] = []
intersperse sep (x:xs) = x : prependToAll sep xs
prependToAll :: a -> [a] -> [a]
prependToAll _ [] = []
prependToAll sep (x:xs) = sep : x : prependToAll sep xs
multi intersperse ($, []) { [] }
multi intersperse ($sep, [$x, **@xs]) {
$x, |prepend_to_all($sep, @xs)
}
multi prepend_to_all ($, []) { [] }
multi prepend_to_all ($sep, [$x, **@xs]) {
$sep, $x, |prepend_to_all($sep, @xs);
}
say intersperse 0, [1,2,3];
say intersperse <X Y>, [<a b>, <c d>, <e f>];
# say intersperse(0, 1..*);
# say intersperse(0, 1...*);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment