【发布时间】:2023-08-01 20:16:01
【问题描述】:
我正在编写 OCaml 代码,该代码读取一个列表并删除出现在列表开头的任何 char 'i's。例如,列表removeI['i';'i';'a';'c';'i'] 应该返回-: int * char list = ['a';'c';'i'],因为列表的开头有2 个'i'。我相信我知道如何正确实施;但是,我想返回一个元组,其中包括删除的 'i' 的数量以及删除了 'i' 的新列表。我知道这听起来可能令人困惑,但一个例子是 removeI['i';'i';'a';'c';'i'] -: int * char list = (2,['a';'c';'i']) 删除了 2 个 'i' 和删除了 'i' 的新列表。
到目前为止,我有以下功能:
let rec removeI list = match list with
| [] -> []
| x::[] -> x::[]
| x::y::t1 -> if x='i' then removeI (y::t1)
else list;;
这将返回删除了第一个 'i' 的列表,但是当我尝试将删除的 'i' 的数量作为元组的一部分包含在内时,我不断收到错误消息。谁能把我推向正确的方向?谢谢!
【问题讨论】:
标签: list recursion tuples ocaml caml