let mult lsts =
List.rev lsts
|> List.fold (fun acc h ->
h
|> List.collect (fun e -> acc |> List.map (fun l -> e :: l ) )
) [[]]
let nestedApply f lsts = mult lsts |> List.collect f
[[1 .. 5];[6;7];[11;12]]
|> nestedApply id
|> printfn "%A"