Функции, которые вызывают друг друга в модуле в OCaml - PullRequest
3 голосов
/ 29 марта 2012

У меня вопрос по поводу ocaml, я новичок: -)

Вот пример того, что я пытаюсь сделать: (Я знаю, что это бессмысленно, но это не мое настоящеекод, это просто пример)

let func a b = a
let func2 a b = b

let func_a a b =
    if b < 0 then
       func_b b a
    else
       func a b

let func_b a b =
    if a < 0 then
       func2 a b
    else
       func_a b a

Проблема заключается в следующем: Unbound value func_b in the first "if" in func_a...

Если кто-нибудь может помочь?

Редактировать: Я понимаюпочему это не связано, но я не знаю, как это исправить.

Большое спасибо!

Макс

1 Ответ

5 голосов
/ 29 марта 2012

Ключевое слово взаимно рекурсивные функции :

let func a b = a
let func2 a b = b

let rec func_a a b =
    if b < 0 then
       func_b b a
    else
       func a b

and func_b a b =
    if a < 0 then
       func2 a b
    else
       func_a b a
...