У меня есть вопрос относительно потока выполнения в рекурсивных функциях в OCaml.Это сценарий:
У меня есть две рекурсивные функции, Concat и Reverse .Обратные звонки Конкат.Может ли кто-нибудь объяснить, что происходит, когда я, например, отправляю список [1;2;3]?
let rec concat (l1,l2) =
match l1 with
[] -> l2
| (h::t) -> h::(concat (t,l2));;
let rec reverse (l: int list) =
match l with
[] -> []
| (h :: t) -> concat (reverse t, [h]);;
// Call
let list1 = [1; 2; 3] ;;
reverse list1 ;;
Я знаю, что это не оптимальный способ перевернуть список, но сейчас меня интересует только то, как две рекурсивные функции работают друг с другом.
Спасибо!