【发布时间】:2011-09-06 07:39:26
【问题描述】:
我在理解这个函数的工作原理时遇到了一些问题, 特别是我不明白关于最后一行的控制流程。 有人可以向我解释它的步骤,也许用伪代码?
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。 -
我想说的是整个函数的控制流程,我不明白为什么最后一行有四个参数,返回值是什么。感谢您的评论。
-
调用函数f给元组(teq1,teq2,lneq)赋值?
-
是的。或者更具体地说:调用 f 并返回一个包含三个值的元组,然后将这三个值分别分配给变量
teq1、teq2和lneq。