Scheme Printf-in方案

Scheme Printf-in方案,scheme,lisp,Scheme,Lisp,在scheme中,我将如何执行以下操作 printf("I went to the park at %d with %s", 4, "Bob"); 我现在最接近的是: (define TIME 4) (define NAME "Bob") (display "I went to the park at ") (display TIME) (display " with ") (display N

在scheme中,我将如何执行以下操作

printf("I went to the park at %d with %s", 4, "Bob");
我现在最接近的是:

(define TIME 4)
(define NAME "Bob")
(display "I went to the park at ") (display TIME) (display " with ") (display NAME) (display ".")

这实际上取决于您使用的是什么方案解释器。例如,在Racket中,您可以使用
printf
获得类似效果:

(printf "I went to the park at ~a with ~a" 4 "Bob")
=> I went to the park at 4 with Bob

检查更多的格式修改器。

这实际上取决于您使用的方案解释器。例如,在Racket中,您可以使用
printf
获得类似效果:

(printf "I went to the park at ~a with ~a" 4 "Bob")
=> I went to the park at 4 with Bob

检查更多格式修改器。

在标准方案中无法执行此操作。许多Scheme实现都有一个基于的
格式
过程。例如,Chez方案有一个相当完整的
format
实现,还有
printf
,它只是
format
的包装。我习惯于使用
格式
,因此我从未想过在lisps中使用
printf

>(格式为#t“我和~A~%%”4“鲍勃去了~A的公园”)
我4点和鲍勃去公园
>(printf“我和~A~%”4“鲍勃去了~A的公园)
我4点和鲍勃去公园
当第一个参数为
#t
时,
格式将输出发送到当前输出端口
printf
自动将输出发送到当前输出端口。前缀为波浪号(
~
)。
~A
或美学指令以人类可读的形式打印对象,这是大多数情况下您想要的。还有其他用于格式化数字的指令;我添加了
~%
指令,它发出一个换行符。您的原始示例没有包含换行符,并且至少在C语言中,
printf
,没有在输出的末尾添加换行符(通常这是可取的)。
format
过程应该比所有
printf
s的母亲,即C的
fprintf
更能控制结果

打印格式化输出的具体设施将取决于实现,但Chez方案、MIT方案、Gauche方案和Guile都实现
格式
。Chicken Scheme实现了
格式
,还实现了
printf
fprintf
sprintf
,它们都使用了与
格式
相同的格式指令。Racket有许多格式化的输出程序,包括
format
printf
fprintf
;所有这些都使用公共Lisp样式的格式指令

您必须查阅特定实现的文档,以了解支持哪些格式指令以及它们是如何工作的;Chez Scheme文档包含一些信息,但建议咨询通用Lisp HyperSpec以获取完整的文档


还有和,它们为支持它们的实现提供了一些这种功能。

在标准方案中无法做到这一点。许多Scheme实现都有一个基于的
格式
过程。例如,Chez方案有一个相当完整的
format
实现,还有
printf
,它只是
format
的包装。我习惯于使用
格式
,因此我从未想过在lisps中使用
printf

>(格式为#t“我和~A~%%”4“鲍勃去了~A的公园”)
我4点和鲍勃去公园
>(printf“我和~A~%”4“鲍勃去了~A的公园)
我4点和鲍勃去公园
当第一个参数为
#t
时,
格式将输出发送到当前输出端口
printf
自动将输出发送到当前输出端口。前缀为波浪号(
~
)。
~A
或美学指令以人类可读的形式打印对象,这是大多数情况下您想要的。还有其他用于格式化数字的指令;我添加了
~%
指令,它发出一个换行符。您的原始示例没有包含换行符,并且至少在C语言中,
printf
,没有在输出的末尾添加换行符(通常这是可取的)。
format
过程应该比所有
printf
s的母亲,即C的
fprintf
更能控制结果

打印格式化输出的具体设施将取决于实现,但Chez方案、MIT方案、Gauche方案和Guile都实现
格式
。Chicken Scheme实现了
格式
,还实现了
printf
fprintf
sprintf
,它们都使用了与
格式
相同的格式指令。Racket有许多格式化的输出程序,包括
format
printf
fprintf
;所有这些都使用公共Lisp样式的格式指令

您必须查阅特定实现的文档,以了解支持哪些格式指令以及它们是如何工作的;Chez Scheme文档包含一些信息,但建议咨询通用Lisp HyperSpec以获取完整的文档

还有和,它们为支持它们的实现提供了一些这种功能