改行しかしない
30分プログラム、その797。anarchy golf - Carriage no returnにインスパイアされました。
使い方
- no_return "abc\ndef"; val it = "abc\n def" : string
ソースコード
fun lines s = String.tokens (fn c => c = #"\n") s; fun unlines xs = String.concatWith "\n" xs; fun pad n = String.implode (List.tabulate (n,(fn _ => #" "))); fun fst (x,_) = x; fun snd (_,y) = y; fun concat_with_pad xs = List.foldl (fn (x,(n,ys)) => (String.size x + n, (pad n) ^ x :: ys)) (0,[]) xs; fun no_return str = unlines (List.rev (snd (concat_with_pad (lines str))));