嵌套的if-else语句-ocaml

嵌套的if-else语句-ocaml,ocaml,Ocaml,我们可以在ocaml中的if-else循环中执行多个操作吗 我正在努力做到以下几点: let rec appendtolist n list b = let f x = if ( b < 0 ) then x else if (b == 0) then ((appendtocode n (List.hd list) ) (b-1)) (* THIS LINE *) else ((appendtocode n (List.hd

我们可以在ocaml中的if-else循环中执行多个操作吗

我正在努力做到以下几点:

let rec appendtolist n list b  =

    let f x =

        if ( b < 0 ) then x

        else if (b == 0) then ((appendtocode n (List.hd list) ) (b-1)) (* THIS LINE *)

        else ((appendtocode n (List.hd list)) :: (appendtolist n (List.tl list) (b-1)) )

    in

    f list

    ;;
让rec appendtolist n列表b=
设fx=
如果(b<0),那么x
否则,如果(b==0),则((appendtocode n(List.hd List))(b-1))(*此行*)
else((appendtocode n(List.hd List)):(appendtolist n(List.tl List)(b-1)))
在里面
f列表
;;
我收到了编译器的投诉,我在那行加了粗体字:

此表达式不是函数,无法应用

我想在
b==0
时调用我的函数,并减小
b
的值

在这种情况下我怎么做

请告知

谢谢。

快速猜测:

表达式为

( appendtocode n (List.hd list) )

返回非函数的内容,因此您无法将(b-1)的值应用于它,而这正是您尝试执行的操作。要进行验证,您可以查找
appendtocode
的类型,并查看它可以包含两个或三个curried参数。

这与错误基本相同

你在评估

appendtocode n (List.hd list)
它返回的值不是函数。然后你试着用
b-1
作为它的参数来调用它,但是因为它不是一个函数,所以你不能这样做

我想在b==0时调用我的函数,同时也要递减b的值

减量
b
为谁
b
是函数
appendtolist
的一个参数,因此如果递归调用
appendtolist
,可以为
b
提供一个新参数,这就是您在
else
案例中所做的,并且工作正常。但是在
then
情况下,您没有调用
appendtolist
。您只调用了
appendtocode
appendtocode
没有第三个参数
b
。因此,传递它
b-1
根本没有意义

我的猜测是,如果您删除
b-1
,您的程序将正常工作


PS:如果s,则此问题与嵌套的
完全无关。

appendtocode返回字符串。我想称之为,同时也递减b.gr8的值!我刚取下b-1,再次打电话给appendlist。工作gr8!!!谢谢:)对不起,给你添麻烦了。仍在尝试学习此语言:)我不想将b-1应用于appendtocode。我只想在这个函数中减量b-1。