在方案中显示和返回内容的程序?

Snu*_*fer -1 syntax scheme function definition function-call

我希望我的程序打印一些东西,然后返回那个东西。我试过这个

(define (print x)
    ((display x)
     x))
Run Code Online (Sandbox Code Playgroud)

不是应该直接说这个过程x首先显示然后返回它,就像它在过程结束时所表达的那样吗?好吧,显然这是错误的,而且我对Scheme 有一些非常基本的了解。所以任何人,帮助我理解这一点。谢谢

ex *_*ilo 6

发布的代码有太多括号。在 Lisp 中,括号是有意义的,表示函数调用,而不仅仅是操作数的分组。

使用((display x) x),您的代码尝试将调用返回的值(在 R6RS 方案中未指定)作为函数调用(display x),并将 的值x作为该函数调用中的参数。反而:

(define (print x)
  (display x)
  x)
Run Code Online (Sandbox Code Playgroud)

作品。

只需删除无关的括号即可。它们并非无害。