Formatting

The :std/format library implements string formatting as specified in SRFI 48.

To use bindings from this module

(import :std/format)

format

(format fmt . args)
  fmt   := string
  args  := mixed values

-> string

Formats the arguments to a string using the supplied format specifier.

Differences with SRFI 48

  • lower-case synonyms for all format specifiers (~a and ~A are equivalent)
  • ~u/~U for unicode hex char print (for #\uXXXX)
  • ~f/~F means "float" and does non-exp fp (C-style %f more or less)
  • ~r/~R means "repr" and works with :std/misc/repr and the :pr method
  • ~w{spec} does generic fixed width
  • ~! does force-output (inspired by OCaml)
  • not implemented: ~& ~H wtfs

fprintf

(fprintf port fmt . args)
  port  := output-port
  fmt   := string
  args  := mixed values

Same as format but outputs to a specific output port.

printf

(printf fmt . args)
  fmt   := string
  args  := mixed values

Same as fprintf but with the output port defaulted to (current-output-port)

eprintf

(eprintf fmt . args)
  fmt   := string
  args  := mixed values

Same as fprintf but with the output port defaulted to (current-error-port)