2016-03-22 2 views
0

У меня есть функции, которые называются «упорядоченными». Вызывая его со списком, он возвращает либо #t, либо #f.Проверка эквивалентности #t? (Схема)

Как я могу проверить, какое значение оно возвращает в выражении if вне функции? Прямо сейчас у меня есть:

(if (eqv? (ordered (car list)) '#t)) 

Который действительно не работает .. Как я мог переписать его?

Спасибо!

ответ

2

Вы всегда можете использовать

(if (ordered (car lst)) 
    ...) 

В схеме, единственное ложное значение #f. Все остальное считается истинным.

+0

большое спасибо, ребята! – Gambit2007

4

Чтобы уточнить ответ Криса, вам не нужно явно указывать равенство #t. Вы можете использовать результат применения процедуры непосредственно в if

(if (ordered (car list)) 
    "ordered returned true" 
    "ordered returned non-true") 

Или в cond

(cond [(ordered (car list)) "ordered returned true"] 
     [else "ordered returned non-true"]) 

Кроме того, это обычный для суффикс имени вашей процедуры с ?, если она возвращает логическое значение

(define (ordered? list) ...) 

Таким образом, это немного более читаемо и легко понять в других частях вашего кода

(if (ordered? (car list)) ...) 

(cond [(ordered? (car list)) ...] 
     [else ...]) 
Смежные вопросы