static S asciiSideBySide(L texts) { if (l(texts) < 2) ret unnull(first(texts)); if (l(texts) > 2) // nicely inefficient :) ret asciiSideBySide(ll(asciiSideBySide(dropLast(texts)), last(texts))); L l1 = lines(first(texts)), l2 = lines(second(texts)); int col1 = maxStringLength(l1), n = max(l(l1), l(l2)); new StringBuilder buf; for i to n: buf.append(rpad(unnull(get(l1, i)), col1)) .append(unnull(get(l2, i))).append("\n"); ret str(buf); }