方案如何删除额外的消息? like; Value; GNU Scheme中未指定的返回值

时间:2017-11-23 10:57:09

标签: scheme

我是大学的计算机科学专业的学生,​​我的教授给我一个关于Scheme的任务。

然后,我设置了方案9.2版本,并尝试这个,但是,因为这个我会疯了![在此输入图像描述] [1]

table1              
R   y   p       
1   A   100     
2   B   101     
3   R   102     

table2              
R   z   p       
4   A   102     
5   R   103     
6   T   104     

MERGED              
p   R   y   R   z
100 1   A       
101 2   B       
102 3   R   4   A
103         5   R
104         6   T
那是什么? ;未指定的返回值

我想显示“嗨”!

我有疑问,如何删除它以及如何调用?错误代码?,检查文字?或者是什么?有一个词?

感谢阅读......

1 个答案:

答案 0 :(得分:0)

您正在使用read-eval-print循环。这会导致您为其提供的每个表达式都有响应。如果您不喜欢,可以运行程序而不是使用REPL。

如何运行程序不在标准范围内,因此您需要检查所选实施的文档。

以下是使用Ikarus的示例:

#!r6rs
(import (rnrs))

(+ 4 5)
(display "Hello, world!")
(newline)

我已将其保存为test.scm,我就这样开始了:

$ ikarus --r6rs-script  test.scm
Hello, world!
$

请注意,(+ 4 5)的结果不会显示。它是死代码,因为值是计算的,但随后被抛弃,因为它没有被使用,然后继续评估下一个表达式。除非您明确要求,否则不会打印任何内容。在Ikarus REPL中你会看到:

> (+ 4 5)
9
> (display "Hello, world!")
Hello, world!> (newline)

> 

它不会在Ikarus REPL中打印不受约束的值#<void>>。要查看它,您需要display

(display (if #f #t))
; ==> #<void> (not printed by the REPL), but `display` will print `#<void>`