26 lines
508 B
Text
26 lines
508 B
Text
import("std/op").
|
|
|
|
takeWhileS(f, "") -> "".
|
|
takeWhileS(f, x::xs) -> do
|
|
if f(x) == true then x :: takeWhileS(f, xs)
|
|
else ""
|
|
end.
|
|
|
|
takeUntilS(f, xs) -> takeWhileS(\x -> op\not(f(x)), xs).
|
|
|
|
dropWhileS(f, "") -> "".
|
|
dropWhileS(f, x::xs) -> do
|
|
if f(x) == true then dropWhileS(f, xs)
|
|
else x :: xs
|
|
end.
|
|
|
|
dropS(0, x) -> x.
|
|
dropS(n, "") -> "".
|
|
dropS(n, _::xs) -> dropS(n-1, xs).
|
|
|
|
takeS(0, _) -> "".
|
|
takeS(n, "") -> "".
|
|
takeS(n, x::xs) -> x :: takeS(n-1, xs).
|
|
|
|
concat([]) -> "".
|
|
concat(x :: xs) -> x + concat(xs).
|