1 | module Libraries.Data.String.Builder
3 | import public Libraries.Data.DList
6 | intersperse : a -> List a -> DList a
7 | intersperse sep [] = []
8 | intersperse sep [x] = [x]
9 | intersperse sep (x :: xs) = x :: go sep xs
11 | go : a -> List a -> DList a
13 | go sep (x :: xs) = sep :: x :: go sep xs
17 | Builder = DList String
20 | char : Char -> Builder
21 | char c = fromString $
cast c
24 | sepBy : String -> List Builder -> Builder
27 | sepBy sep (x :: xs) = x ++ go sep xs
29 | go : String -> List Builder -> Builder
31 | go sep (x :: xs) = sep :: x ++ go sep xs
34 | build : Builder -> String
35 | build = fastConcat . reify
38 | showB : Show a => a -> Builder
39 | showB = singleton . show