SML: Как определить, является ли индекс списка пустым? - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь определить, является ли мой hd (список tl) ничем или нет.hd(tl list) = ? Что бы я использовал на другой стороне символа равенства?

1 Ответ

0 голосов
/ 20 октября 2018

Вы можете выразить вопрос "является 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
...