Function 如何使tail函数返回我需要的?
我需要用OCaml对列表进行编码。命令:编码['a'、'a'、'b'、'b'、'b'、'c'];;必须返回[(2,'a');(3,'b');(1,'c')] 现在我有了这个功能:Function 如何使tail函数返回我需要的?,function,functional-programming,ocaml,Function,Functional Programming,Ocaml,我需要用OCaml对列表进行编码。命令:编码['a'、'a'、'b'、'b'、'b'、'c'];;必须返回[(2,'a');(3,'b');(1,'c')] 现在我有了这个功能: let encode list = let rec encodeHelper list acc = match list with | [] -> [] | head :: [] -> (1, head) :: [] | head :: headNext :: tail ->
let encode list =
let rec encodeHelper list acc = match list with
| [] -> []
| head :: [] -> (1, head) :: []
| head :: headNext :: tail -> if (head = headNext) then encodeHelper (headNext :: tail) (acc + 1)
else (acc, head) :: encodeHelper (headNext :: tail) acc
in encodeHelper list 1
;;
但它的回报是:
- :(int*(char*char*char*char*char*char*char))列表= [(1,('a','a','b','b','b','c'))]
;
)。您的测试数据使用逗号(,
)。逗号用于元组,这就是在结果中看到元组的原因
如果将,
更改为代码>在您的测试数据中,您应该看到更接近您所寻找的内容。至少还有一个问题需要解决(在我的测试中)