SML:如何确定列表索引是否为空?

SML: How to determine if a list index is empty?

我正在尝试确定我的 hd(tl list) 是否为空。 hd(tl list) = ? 我会在等号的另一边使用什么?

您可以将问题 'is hd(tl list) nothing or not' 表示为等效问题 'does the list have less than two elements'。后一个问题很容易通过 SML 使用列表中的模式匹配以一种优雅的方式回答。这是一个互动环节:

$ poly
Poly/ML 5.7.1 Release
> fun isNothing [] = true
#   | isNothing [_] = true
#   | isNothing _ = false;
val isNothing = fn: 'a list -> bool

此函数表示,'an empty list evaluates to true'、'a list with a single element evaluates to 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