Scheme Printf-in方案
在scheme中,我将如何执行以下操作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
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以获取完整的文档
还有和,它们为支持它们的实现提供了一些这种功能