RosettaCodeData/Task/Non-continuous-subsequences/Standard-ML/non-continuous-subsequences.ml

22 lines
367 B
Standard ML

fun fence s [] =
if s >= 3 then
[[]]
else
[]
| fence s (x :: xs) =
if s mod 2 = 0 then
map
(fn ys => x :: ys)
(fence (s + 1) xs)
@
fence s xs
else
map
(fn ys => x :: ys)
(fence s xs)
@
fence (s + 1) xs
fun ncsubseq xs = fence 0 xs