function break_into_lines(string) = let indices = {i in [0:#string]; a in string | a == newline}; lengths = {i-p-1: p in previous(indices,-1); i in indices}; remaining_string = {a in string | a /= newline}; left_over = #remaining_string - sum(lengths); lengths = (if plusp(left_over) then lengths++[left_over] else lengths) in partition(remaining_string,lengths);