我在理解这个函数的工作原理时遇到了一些问题,特别是我不理解最后一行的控制流程。 有人能解释我的步骤,可能是伪代码吗?Ocaml,了解一个函数
let traduit_pair a b =
let a = traduit mark a in let b = traduit mark b in (a, b) in
let (teq1, teq2, lneq) =
let rec f l1 l2 l3 =
(function
| [] -> ((Uplet l1), (Uplet l2), l3)
| EqualIF (a, b) :: fin ->
let (a, b) = traduit_pair a b
in f (a :: l1) (b :: l2) l3 fin
| NotEqualIF (a, b) :: fin ->
let (a, b) = traduit_pair a b
in f l1 l2 ((a, b) :: l3) fin)
in f [] [] [] (List.rev condlst)
我不确定“关于最后一行的控制流程”是什么意思。最后一行只是调用在它之前的行上定义的函数“f”。 – sepp2k
我想说整个函数的控制流,我不明白为什么最后一行有四个参数,什么是返回值。谢谢你的评论。 – Giovanna
函数f被调用来为元组赋值(teq1,teq2,lneq)? – Giovanna