ocaml的新手,所以我可以带来的是伪造的。
我想编写一个接受列表的函数,然后返回一个只有奇数整数的新列表。
因此,只需遍历列表,可能使用%2来查找奇数整数,并将它们附加到新列表中。
是ocaml的新手,我查看了什么可能有用,例如 map,rev-map或iter,甚至可能是过滤器?。
最好使用什么,以及如何设置?
答案 0 :(得分:5)
List module中最合适的功能是filter
。看看它的签名和描述:
val filter : ('a -> bool) -> 'a list -> 'a list
filter p l返回满足该列表的列表l的所有元素 谓词p。保留输入列表中元素的顺序。
你应该知道如何提供用于检查奇数整数的谓词,如你的问题中清楚描述的那样。
另一个不太优雅的解决方案是:
此解决方案包含List.fold_left
用于累积结果,List.rev
用于反转列表。
由于您只询问哪些功能合适,希望您能够自己使用它们。
修改强>
由于您在List.filter
上分享了您的尝试,因此以下是一种使用方法:
let odds xs = List.filter (fun x -> x mod 2 <> 0) xs
为了能够进一步使用OCaml,请花一些时间阅读OCaml教程。 OCaml tag wiki有很多很好的资源可供开始使用。