NAME
snip - Provide functionality similar to Haskell's span
SYNOPSIS
use snip;
.say for snip * < 10, 2, 2, 2, 5, 5, 7, 13, 9, 6, 2, 20, 4;
# (2 2 2 5 5 7)
# (13 9 6 2 20 4)
.say for snip (* < 10, * < 20), 2, 2, 2, 5, 5, 7, 13, 9, 6, 2, 20, 4;
# (2 2 2 5 5 7)
# (13 9 6 2)
# (20 4)
.say for snip Int, 2, 2, 2, 5, 5, "a", "b", "c";
# (2 2 2 5 5)
# (a b c)
DESCRIPTION
The snip
distribution exports a single subroutine snip
that mimics the functionality provided by Haskell's span functionality. But only if the core does not supply a snip
subroutine already (which it may at some point in the future).
The snip
subroutine takes a matcher much like grep
does, which can be a Callable
or any other object that can have the ACCEPTS
method called on it. Different from the Haskell's span
implementation, snip
can take multiple matchers to snip the origin list in more than 2 parts.
AUTHOR
Elizabeth Mattijsen liz@raku.rocks
Source can be located at: https://github.com/lizmat/snip . Comments and Pull Requests are welcome.
If you like this module, or what I’m doing more generally, committing to a small sponsorship would mean a great deal to me!
COPYRIGHT AND LICENSE
Copyright 2022, 2024 Elizabeth Mattijsen
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.