【发布时间】:2018-06-26 15:53:08
【问题描述】:
我正在尝试编写一个高阶函数 pick,它选择函数 f 输出为 true 的元素,然后将它们的值输出到列表中。
例如:
#let f a = if a>8 then true else false;;
pick [1;3;4;9;12;22] f;;
- : int list = [9;12;22]
到目前为止,我编写了这段代码,但它不起作用:
let rec pick f list =
let p1 = f list in
if (List.hd(p1)==true)
then List.hd(p1)::pick List.tl(p1)
else pick List.tl(p1)
错误:此表达式的类型为 'a list 但是需要一个类型为 'b -> bool#
的表达式我怎样才能更正它以便它适用于列表?
【问题讨论】:
标签: ocaml