2010-12-13 2 views
1

Я попытался запустить следующий код схемы:Схема ошибки # аннулируются

(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. ")))))))) 

Но я получаю следующий результат:

Le gagnant est : personne. Alper et Ezgi sont exaequos. #<void> 

Откуда #void взялось? Как я могу избавиться от него?

+0

Покажите нам, как делается звонок, пожалуйста. –

ответ

2

К сожалению, неверный ответ. У вас есть дополнительный дисплей:

(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. "))))))) 

Должно работать.

+0

мог бы добавить ур ответ на мою функцию ?? (affiche-gagnant "Alper" "Ezgi" 1 1) –

+0

Ваша функция верна. Вы так называете это неправильно. Что вы используете? DrScheme? DrRacket? Скажите мне, что вы вводите в подсказке, чтобы проверить свою функцию. –

+0

это drscheme нет, я назвал fuction: (affiche-gagnant «Alper» «Ezgi» 1 1) –

0

В некоторых реализациях Схемы любая функция, которая не должна возвращать что-либо (например, begin, define, set!), Фактически возвращает специальное значение #<void>. Ошибка отображения такого значения. В вашем случае это был дополнительный «дисплей».

(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. ")))))))