Схема № пустая ошибка - PullRequest
       21

Схема № пустая ошибка

1 голос
/ 14 декабря 2010

Я попытался запустить следующий код схемы:

(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?Как мне от этого избавиться?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

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

(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 голосов
/ 15 июня 2011

В некоторых реализациях Scheme любая функция, которая не должна ничего возвращать (например, 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. ")))))))
...