Scheme调用process-square函数输出#!unspecific问题排查求助
问题原因
你遇到的#!unspecific是Scheme中副作用类过程的标准返回值:
display、newline这类仅用于执行输出操作的过程,Scheme标准没有规定它们的返回值,大部分实现(比如MIT/GNU Scheme)会返回#!unspecific标识该值无实际业务意义- 你的测试代码用了
(display (process-square ...)),相当于把process-square的返回值额外打印了一遍:process-square的两个分支分别执行display-square(内部全是display和newline调用)、直接调用display,最终返回的就是未指定值,多出来的这一行就是打印该未指定值的结果
修复方案
直接修改测试代码即可,无需调整功能逻辑:process-square内部已经完成了所有需要的输出操作,不需要外层套display打印它的返回值,修改后测试代码如下:
(display "TEST 12: ----- process-square side=3.16228") (newline) (process-square (make-point 3 1) (make-point 2 4) (make-point 5 5) (make-point 6 2)) (newline)
内容的提问来源于stack exchange,提问作者Qezzz
相关产品推荐
相关产品推荐

