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

时间:2018-10-19 18:59:34

标签: list functional-programming sml smlnj

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

1 个答案:

答案 0 :(得分:3)

您可以将问题“ 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