我已经声明了一个变量al : 'a list
、一个函数a_to_b : 'a -> 'b
和一个函数score : 'b -> int
。然后let bl = List.map a_to_b al in ...
在下面的代码中定义bl : 'b list
.
let find_best (bl : 'b list) : 'b =
let score_best, b_best = List.fold_left
(fun (score_old, b_old) b_new ->
let score_new = score b_new in
if score_old < score_new then
(score_new, b_new) else
(score_old, b_old))
(score (List.hd bl), List.hd bl) bl in
b_best
let bl = List.map a_to_b al in
find_best bl
这段代码找到了b_best
它score
最大的一个。但是我的一个需求是我也想知道,这是通过什么a_best
生成的,没有办法。例如,如果是 中的第 4 个元素,我认为第4 个元素就是我想要得到的。b_best
a_to_b
b_best
bl
al
我不想在函数中添加更多参数find_best
。我的问题是,是否有一种传统的方法来定义 and 的类型al
,bl
以便于追踪a_best
,b_best
例如,使用array
而不是list
?或转换为array
然后转换list
回?