1

我正在尝试以非递归方式过滤列表,但我不确定如何去做。举个简单的例子,假设我有一个列表 [1, 2, 3, 4, 5, 6, 7],我想过滤它,以便它返回一个大于 3 的数字列表,即 [4, 5, 6, 7]。

我可以递归地做到这一点没问题,但我被困在这里。不幸的是,我是 sml 的新手,我能想到的最好的方法是使用 map,但我不认为 map 是为此而制作的。

4

2 回答 2

2

你是对的:map不是为此而制作的 - 生成的列表map将始终与给定的列表具有相同的大小map.

List.filter然而为此而生的。如果您List.filter使用函数作为参数调用,如果数字大于 3,则返回 true,它将完全按照您的意愿进行。

于 2013-02-17T04:40:01.050 回答
0

提示:尝试使用foldr,而不是map

于 2013-02-17T16:10:02.053 回答