Здравствуйте, no4, Вы писали:
no4>Кстати, интересно, что в ML надо сделать, чтоб звать как себя так и предыдущий вариант одноименной функции?
перед определением рекурсивной функции старую переименовать:
let foo _ = ...
let foo_old = foo
let rec foo = ... (foo_old x) ... (foo y)
Хотя обычно такой проблемы не возникает, обычно все функции имеют различные имена. Потому Хаскелевский подход — все определения верхнего уровня обернуть в неявный letrec — вызывает меньше вопросов.