我是大学的计算机科学专业的学生,我的教授给我一个关于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
那是什么? ;未指定的返回值
我想显示“嗨”!
我有疑问,如何删除它以及如何调用?错误代码?,检查文字?或者是什么?有一个词?
感谢阅读......
答案 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>`