Estou aprendendo OCaml e estou tendo um pouco de dificuldade com programação funcional...
Preciso fazer uma função que substitua a para uma lista dada de inteiros, os caracteres naquele índice de uma string. Digamos, por exemplo, que eu receba [1;4] 'u' "Hello" como entrada, ele retorna "Hullu".
Isto é o que eu criei:
let remplace_positions lst c str =
let rec acc lst c str n l_index ret =
match (n >= String.length str, List.nth lst l_index = n) with
| true, _ -> ret
| _, true -> acc lst c (n+1) (l_index+1) (ret ^ (String.make 1 c))
| _, _ -> acc lst c (n+1) (l_index+1) (ret ^ (String.make 1 (String.get str n)))
in
acc lst c str 0 0 ""
Mas como você pode ver, há um erro nos dois últimos casos de correspondência. Eles são do tipo string -> string, mas eu quero que eles sejam do tipo string.
Alguém sabe como consertar isso ao chamar a função recursivamente?