Вы можете выразить вопрос "является hd(tl list)
ничем или нет" как эквивалентный вопрос ", имеет ли list
менее двух элементов".На последний вопрос легко ответить с помощью SML элегантным способом, используя сопоставление с шаблоном в списке.Вот интерактивный сеанс:
$ poly
Poly/ML 5.7.1 Release
> fun isNothing [] = true
# | isNothing [_] = true
# | isNothing _ = false;
val isNothing = fn: 'a list -> bool
Эта функция говорит: «пустой список оценивается в true
», «список с одним элементом оценивается в true
», любой другой список оценивается вfalse
.Тесты:
> isNothing [];
val it = true: bool
> isNothing [1];
val it = true: bool
> isNothing [1, 2];
val it = false: bool
> isNothing [1, 2, 3];
val it = false: bool