gpt4 book ai didi

ocaml - Camel 介绍

转载 作者:行者123 更新时间:2023-12-04 16:28:11 25 4
gpt4 key购买 nike

我现在正在尝试学习ocaml,并希望从一个小程序开始,生成所有位组合:
[“0”,“0”,“0”]
[“0”,“0”,“1”]
[“0”,“1”,“0”]
... 等等

我的想法是下面的代码:

let rec bitstr length list =
if length = 0 then
list
else begin
bitstr (length-1)("0"::list);
bitstr (length-1)("1"::list);
end;;

但我收到以下错误:
Warning S: this expression should have type unit.
val bitstr : int -> string list -> string list = <fun>
# bitstr 3 [];;
- : string list = ["1"; "1"; "1"]

我不知道该更改什么,您能帮我吗?

最好的祝福
菲利普

最佳答案

begin foo; bar end执行foo并丢弃结果,然后执行bar。因为这仅在foo具有副作用且没有有意义的返回值的情况下才有意义,如果foo具有除单位以外的返回值,则ocaml不会发出警告,因为其他所有情况都可能是程序员错误(即,程序员实际上并不打算使用结果将被丢弃)-此处就是这种情况。

在这种情况下,用“0”计算列表然后将其丢弃实际上没有任何意义。大概您想串联两个列表。您可以使用@运算符执行此操作:

let rec bitstr length list =
if length = 0 then
[list]
else
bitstr (length-1)("0"::list) @ bitstr (length-1)("1"::list);;

请注意,我还使 length = 0情况返回了 [list]而不是 list,因此结果是列表列表,而不是平面列表。

关于ocaml - Camel 介绍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2802900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com