The standard library Printf_Combinator api defines access to text formatting modelled on C’s printf(). This library was written in 2002 by Matthias Blume; the design is inspired by Olivier Danvy’s "Functional Prettyprinting" work.
This interface provides an alternative to the Sfprintf API, upon which the default global printf is based.
The Printf_Combinator api is implemented by the printf_combinator package.
The Printf_Combinator api source code is in src/lib/src/printf-combinator.api.
The above information is manually maintained and may contain errors.
api { Format X; Fragment (X, Y) = Format(X ) -> Format(Y ); Glue X = Fragment((X, X)); Element (X, Y) = Fragment((X, Y -> X)); format : Fragment((String, X)) -> X; format' : (List(String ) -> X) -> Fragment((X, Y)) -> Y; using : (Y -> String) -> Element((X, Y)); int : Element((X, Int)); float : Element((X, Float)); bool : Element((X, Bool)); string : Element((X, String)); string' : Element((X, String)); char : Element((X, Char)); char' : Element((X, Char)); int' : number_string::Radix -> Element((X, Int)); float' : number_string::Float_Format -> Element((X, Float)); glue : Element((Y, X)) -> X -> Glue(Y ); nothing : Glue(X ); text : String -> Glue(X ); sp : Int -> Glue(X ); nl : Glue(X ); tab : Glue(X ); Place; left : Place; center : Place; right : Place; pad : Place -> Int -> Fragment((X, Y)) -> Fragment((X, Y)); trim : Place -> Int -> Fragment((X, Y)) -> Fragment((X, Y)); fit : Place -> Int -> Fragment((X, Y)) -> Fragment((X, Y)); padl : Int -> Fragment((X, Y)) -> Fragment((X, Y)); padr : Int -> Fragment((X, Y)) -> Fragment((X, Y));};