You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scheme中writeln函数多参数打印格式化字符串的实现方法

实现Scheme多参数格式化打印的几种方法

方法1:连续调用输出函数

标准Scheme中的display、writeln(部分实现叫write-line)仅支持单个数据参数(可选指定输出端口),可以把要打印的内容拆分后逐个调用输出函数,最后手动换行:

(display "the number is ")
(display 4)
(display "!")
(newline) ; 实现writeln的换行效果

用begin块打包成单个表达式更整洁:

(begin
  (display "the number is ")
  (display 4)
  (display "!")
  (newline))

方法2:自定义多参数版writeln

自己实现一个支持任意多参数的writeln,遍历参数逐个输出后换行:

(define (writeln . args)
  (for-each display args)
  (newline))

调用方式完全符合书中示例:

(writeln "the number is " 4 "!") ; 输出:the number is 4!

这里用**点参数(. args)**接收任意数量的输入,for-each负责遍历每个参数执行display。

方法3:字符串拼接后输出

如果你的Scheme实现支持字符串操作(比如Racket、MIT Scheme),可以先把所有内容拼接成单个字符串再输出,注意数值要先转成字符串:

(writeln (string-append "the number is " (number->string 4) "!"))

number->string是标准Scheme函数,用于将数值类型转换为字符串类型。

补充说明

书中的代码能运行,大概率是基于特定Scheme扩展或教学实现(比如DrRacket的教学语言、旧版MIT Scheme),这些实现对writeln做了多参数扩展,而你使用的是标准Scheme环境,所以会触发参数数量错误。

内容的提问来源于stack exchange,提问作者FiveSeven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 15:39:18