代码之家  ›  专栏  ›  技术社区  ›  Jae IL

如何删除额外消息?喜欢价值GNU方案中未指定的返回值

  •  0
  • Jae IL  · 技术社区  · 7 年前

    我是大学计算机系的学生,我的教授给我布置了一个关于方案的作业。。

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

    52 error> (display "hi")
    hi
    ;Unspecified return value
    

    那是什么;未指定的返回值

    我只想显示“嗨”!

    我有一些问题,如何删除它,以及如何像那样调用?错误代码?,检查文本?或什么有一个词吗?

    感谢阅读。。。。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Sylwester    7 年前

    您正在使用read eval打印循环。这样做的效果是,您输入的每个表达式都有一个响应。如果您不喜欢,可以运行该程序,而不是使用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)
    
    > 
    

    它不会打印未定义的值 #<void>> 在Ikarus REPL中。要看到它,你需要 display it:

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