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

Scheme R5RS中如何让display函数打印'()而非()?

解决办法

R5RS标准中内置的两个输出过程,定位差异刚好对应你遇到的格式区别:

  • display 用于输出人类易读的内容,会自动省略字面量语法标记,因此空列表输出为()
  • write 用于输出可被read过程解析的标准格式,会保留所有语法标记,空列表输出为'()

你直接将日志输出的调用从display替换为write即可,示例代码如下:

(define x '())
(write x)
;; 输出结果为 => '()

如果你有混合输出的需求,比如要拼接自定义提示文本,也可以自行封装日志过程,即使一定要用display也可以通过特殊判断实现效果:

(define (log-arg arg)
  (display "给定的参数为:")
  (if (null? arg)
      (display "'()")
      (write arg))
  (newline))

额外说明

Scheme原生报错的参数打印逻辑底层用的就是write类的输出过程,所以和你调用write得到的格式完全一致,不会出现参数歧义问题,非常适合错误日志的场景。

内容的提问来源于stack exchange,提问作者Rahul R Badenkal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:15:03