Вложенные условные выражения и неопределенное возвращаемое значение в схеме - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь написать функцию, которая добавляет два максимальных значения из трех параметров.

(define (sumhighest a b c) (cond<br> ((and (>= a b) (>= a c)) (if (>= b c) (+ a b) (+ a c))) ((and (>= b a) (>= b c)) (if (>= a c) (+ a b) (+ b c))) ((and (>= c a) (>= c b)) (if (>= a b) (+ a c) (+ b c)))) )

Всякий раз, когда я использую функцию, я получаю сообщение «неопределенное возвращаемое значение»». Я не знаю, что здесь не работает. Т.е.:

(sumhighest 1 2 3)

РЕДАКТИРОВАТЬ: некоторые люди указали, что этот код работает для них. Я использую MIT-схему реализации интерпретатора. В Ubuntu 18.04 он находится под пакетом, называемым mit-схема.

1 Ответ

0 голосов
/ 06 ноября 2019

Это может зависеть от реализации, но, как упоминалось в комментариях, это работает для некоторых из нас. Не имея больше контекста, я бы предложил вам заменить последнее условие (and (>= c a) (>= c b)) на else. Или переключитесь на другого переводчика:)

...