Scheme 方案#无效错误

Scheme 方案#无效错误,scheme,void,Scheme,Void,我尝试运行以下方案代码: (define affiche-gagnant (lambda (j1 j2 g1 g2) (begin (display "Le gagnant est : ") (display (cond ((> g1 g2) j1) ((< g1 g2) j2) (else (begin (display "personne. ") (display j1

我尝试运行以下方案代码:

(define affiche-gagnant 
  (lambda (j1 j2 g1 g2)
    (begin 
      (display "Le gagnant est : ")
      (display 
       (cond ((> g1 g2) j1) 
             ((< g1 g2) j2) 
             (else (begin (display "personne. ") (display j1) (display " et ") (display j2) (display " sont exaequos. "))))))))
(定义词缀
(λ(j1 j2 g1 g2)
(开始
(显示“Le gagnant est:”)
(显示
(条件(>g1 g2)j1)
((
但我得到以下输出:

Le gagnant est : personne. Alper et Ezgi sont exaequos. #<void>
Le gagnant est:personne。阿尔珀和埃兹吉是我的朋友#

#void
从何而来?我怎样才能摆脱它呢?

哎呀,回答错了。您有一个额外的显示器:

(define affiche-gagnant 
  (lambda (j1 j2 g1 g2)
    (begin 
      (display "Le gagnant est : ")
       (cond ((> g1 g2) (display j1)) 
             ((< g1 g2) (display j2)) 
             (else (begin (display "personne. ") (display j1) (display " et ") (display j2) (display " sont exaequos. ")))))))
(定义词缀
(λ(j1 j2 g1 g2)
(开始
(显示“Le gagnant est:”)
(条件((>g1 g2)(显示j1))
((

应该可以工作。

在Scheme的某些实现中,任何不应该返回任何内容的函数(如begin、define、set!)实际上都会返回一个特殊值
#
。显示这样的值是错误的。在你的情况下,这是一个额外的“显示”

(定义词缀
(λ(j1 j2 g1 g2)
(开始
(显示“Le gagnant est:”)
(续)
((>g1 g2)j1)
((
请告诉我们如何拨打电话。您可以在我的功能中添加您的答案吗??(附加“Alper”“Ezgi”1)您的功能是正确的。你这样称呼是不对的。你在用什么?DrScheme?球拍?告诉我你在提示中键入了什么来测试你的功能。它是drscheme否,我调用了该功能:(affiche gagnant“Alper”“Ezgi”11)很高兴你第一次使用SO成功:Dif ALPER win你的功能给了我Le gagnant est:我不知道谁赢了游戏
(define affiche-gagnant 
  (lambda (j1 j2 g1 g2)
    (begin 
      (display "Le gagnant est : ")
      (cond
        ((> g1 g2) j1) 
        ((< g1 g2) j2) 
        (else (begin (display "personne. ") (display j1) (display " et ") (display j2) (display " sont exaequos. ")))))))