Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试以非递归方式过滤列表,但我不确定如何去做。举个简单的例子,假设我有一个列表 [1, 2, 3, 4, 5, 6, 7],我想过滤它,以便它返回一个大于 3 的数字列表,即 [4, 5, 6, 7]。
我可以递归地做到这一点没问题,但我被困在这里。不幸的是,我是 sml 的新手,我能想到的最好的方法是使用 map,但我不认为 map 是为此而制作的。
你是对的:map不是为此而制作的 - 生成的列表map将始终与给定的列表具有相同的大小map.
map
List.filter然而是为此而生的。如果您List.filter使用函数作为参数调用,如果数字大于 3,则返回 true,它将完全按照您的意愿进行。
List.filter
提示:尝试使用foldr,而不是map。
foldr