main.bend source
main.bend on the hub · documented module
import Basetype Builder is Data: Empty{} Chunk{text: String} Join{left: Builder, right: Builder}def empty() -> Builder: Empty{}def fragment(text: String) -> Builder: Chunk{text}def compose(left: Builder, right: Builder) -> Builder: Join{left, right}def append(builder: Builder, text: String) -> Builder: Join{builder, Chunk{text}}def character(builder: Builder, char: Char) -> Builder: Join{builder, Chunk{SCon{char, SNil{}}}}# Internal suffix traversal. Copies each fragment exactly once.def emit(builder: Builder, suffix: String) -> String: match builder: case Empty{}: suffix case Chunk{text}: String.append(text, suffix) case Join{left, right}: emit(left, emit(right, suffix))def finish(builder: Builder) -> String: emit(builder, SNil{})