내가 가진 코드 : 그것을 위해두 함수를 호출하고 그 결과를 서로의 인수로 사용하는 방법은 무엇입니까?
let join a ~with':b ~by:key =
let rec a' = link a ~to':b' ~by:key
and b' = link b ~to':a' ~by:(Key.opposite key) in
a'
및 컴파일 결과는 다음과 같습니다
는Error: This kind of expression is not allowed as right-hand side of `let rec' build complete
나는 그것을 다시 작성할 수 있습니다 :
let join a ~with':b ~by:key =
let rec a'() = link a ~to':(b'()) ~by:key
and b'() = link b ~to':(a'()) ~by:(Key.opposite key) in
a'()
그것은이 컴파일 가능한 변형,하지만 기능은 무한하다하여 구현 재귀 적이며 필요한 것이 아닙니다.
내 질문 : 첫 번째 구현이 유효하지 않은 이유는 무엇입니까? 두 함수를 호출하고 그 결과를 서로의 인수로 사용하는 방법?
제 컴파일러 버전
= 4.01.0
이것은 식당 철학자의 문제 또는 교착 상태 문제와 비슷합니다. 해결책이있는 것도 상상할 수 없습니다. 나는 ocaml에 대해 아무것도 몰라, 단지 이것이 어떤 종류의 문제인지 지적하고 싶었다. – Luminous