这个函数连接如何与一阶函数一起工作?

How does this function concatenate work with first order functions?

let concat (l : string list) : string = fold_right (fun a x -> a ^ x) l ""

所以通过它,我看到

但是,func a x 怎么知道 a 是列表的第一个元素,x 是第二个元素。

当它再次通过时,它怎么知道a是列表的第三个元素,x是第四个,依此类推?

accumulator是第一个参数,afold functionx是列表的set to each element依次为fold从上面走过。

fold function 的 return 值是 accumulatornew value

accumulator 的初始值为 empty string,因此第一个串联的结果成为 new accumulator,与 first element 的值相同] 的名单。

然后 next element 连接到那个,依此类推,直到到达列表的末尾,此时 fold returns final value of the accumulator,完全连接的字符串。