嵌套的if-else语句-ocaml
我们可以在ocaml中的if-else循环中执行多个操作吗 我正在努力做到以下几点:嵌套的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
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。