Ocaml-将函数应用于字符串列表中的每个字符串并返回新的字符串列表

问题描述 投票:0回答:1

我是OCaml的初学者,在使用match时有些困惑。对于这个问题,我正在学习在返回字符串列表的字符串列表上使用函数。我正在尝试运行一个函数,该函数在字符串列表中的每个元素上返回布尔值,并作为输出返回这些布尔值的字符串列表。例如,假设您具有以下条件:

let foo str =
  (String.length str) > 3;;

let list1 = ["please";"help";"me"]

并且您希望将foo应用于list1中的每个元素,并将以下内容作为所需的输出:

output = [ "true";"true";"false"]

我所做的事情显然不起作用,因为我没有返回字符串列表:

let rec bar (ls : string list) : string list=
    match foo ls with
    | [] -> ()
    | x :: xs -> x :: bar xs
;;

有人有任何想法我该怎么做吗?谢谢!

list recursion ocaml
1个回答
0
投票

在您的匹配表达式中,两种情况都应返回一个列表,因为这是您想要作为结果的类型(而不是()),例如

let rec bar (ls : string list) : string list=
    match ls with
    | [] -> []
    | x :: xs -> (if (foo x) then "true" else "false") :: bar xs
© www.soinside.com 2019 - 2024. All rights reserved.