(import std.List :flatten :map) (let data [[1] 2 [[3 4] 5] [[[]]] [[[6]]] 7 8 []]) (let process (fun (lst) (flatten (map lst (fun (sub) (if (= "List" (type sub)) (process sub) sub)))))) (assert (= (process data) [1 2 3 4 5 6 7 8]) "list is flat")