【问题标题】:Ocaml - apply a function to every string in a string list and returning a new string listOcaml - 对字符串列表中的每个字符串应用一个函数并返回一个新的字符串列表
【发布时间】:2020-01-27 05:57:57
【问题描述】:

我是 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】:

    在您的匹配表达式中,这两种情况都应该返回一个列表,因为这是您想要的结果类型(不是()),并且您想要解构列表(不是将foo 应用于列表)例如。

    let rec bar (ls : string list) : string list=
        match ls with
        | [] -> []
        | x :: xs -> (if (foo x) then "true" else "false") :: bar xs
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多