summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stream.c6
-rw-r--r--stream.h1
-rw-r--r--txr.117
3 files changed, 24 insertions, 0 deletions
diff --git a/stream.c b/stream.c
index 0815aa5d..e07defb4 100644
--- a/stream.c
+++ b/stream.c
@@ -3095,6 +3095,11 @@ val format(val stream, val str, ...)
}
}
+val fmt(val string, struct args *args)
+{
+ return formatv(nil, string, args);
+}
+
static val put_indent(val stream, struct strm_ops *ops, cnum chars)
{
while (chars--)
@@ -3800,6 +3805,7 @@ void stream_init(void)
#endif
reg_fun(format_s, func_n2v(formatv));
+ reg_fun(intern(lit("fmt"), user_package), func_n1v(fmt));
reg_fun(intern(lit("make-string-input-stream"), user_package), func_n1(make_string_input_stream));
reg_fun(intern(lit("make-string-byte-input-stream"), user_package), func_n1(make_string_byte_input_stream));
reg_fun(intern(lit("make-string-output-stream"), user_package), func_n0(make_string_output_stream));
diff --git a/stream.h b/stream.h
index c1699c05..2ce7a5ec 100644
--- a/stream.h
+++ b/stream.h
@@ -170,6 +170,7 @@ val vformat(val stream, val string, va_list);
val vformat_to_string(val string, va_list);
val format(val stream, val string, ...);
val formatv(val stream, val string, struct args *args);
+val fmt(val string, struct args *args);
val put_string(val string, val stream);
val put_line(val string, val stream);
val put_char(val ch, val stream);
diff --git a/txr.1 b/txr.1
index 9dfe7485..67dc77d0 100644
--- a/txr.1
+++ b/txr.1
@@ -33202,6 +33202,23 @@ The precision field is processed syntactically, and no error occurs, however.
.PP
+.coNP Function @ fmt
+.synb
+.mets (fmt < format-string << format-arg *)
+.syne
+.desc
+The
+.code fmt
+function provides a short-hand for formatting to a string, according
+to the following equivalence which holds between
+.code fmt
+and
+.codn format :
+
+.cblk
+ (fmt s arg ...) <--> (format nil s arg ...)
+.cble
+
.coNP Functions @, print @, pprint @, prinl @, pprinl @ tostring and @ tostringp
.synb
.mets (print < obj <> [ stream ])