Я новичок в функциональном программировании, но знаком с императивным программированием. У меня возникли проблемы с переводом фрагмента кода cpp, связанного с одновременным обновлением двух объектов (контекст представляет собой симуляцию n-тел).
Примерно так на С++:
for (Particle &i: particles) {
for (Particle &j: particles) {
collide(i, j) // function that mutates particles i and j
}
}
Я перевожу это на Ocaml с неизменяемыми объектами и неизменяемыми списками. Сложность в том, что мне нужно заменить два объекта одновременно. Пока у меня это:
List.map (fun i ->
List.map (fun j ->
let (new_i, new_j) = collide(i, j) in // function that returns new particles i, j
// how do i update particles with new i, j?
) particles
) particles
Как заменить оба объекта в списке одновременно?