OCaml의 BST에 대한 기본 작업을 위해 모듈/인터페이스를 만들려고합니다. (언어가 어떻게 새로워 졌는지 정확히 알지 못합니다.) 내 목표는 다음과 같은 일을하게 해주는 구현을하는 것이다.모듈을 사용하는 BST - OCaml
T.create();;
T.push(2);;
T.push(3);;
T.push(5);;
2,3,5로 구성된 BST 트리를 얻으려면. 나는 이런 식으로 할 필요가 내가 확인하고 때/내 코드를 사용 그래서
let teeBst = T.push(2)(T.push(3)(T.push(5)(T.create())));;
:
그러나 순간
내가 이런 식으로 뭔가를 작성해야이 달성let tee2 = T.push(2)(T.push(3)(T.push(5)(T.create())));;
T.postorder(tee2);;
출력은 괜찮습니다 :
# val tee2 : T.bt = <abstr>
# - : int list = [2; 3; 5]
그러나 이전에 말씀 드렸듯이 다음과 같이 수행하고 싶습니다.
T.push(2);;
T.push(3);;
T.push(5);;
T.postorder();;
아래 내 구현 (I이 몇 가지 내 postorder 기능을 변경하지만 현재 사용하고있는 사람이 일시적인 그래서 내가 기압이 트리를 확인하실 수 있습니다를 필요로 실현). 해결책을 보면 제게 알려주세요.)
고맙습니다! 파이프 운영자가 내가 찾는 곳이었습니다. 하지만 이제는 포스트 오더 기능에 문제가 있습니다. 이 함수를 "unit-> int list"로 만들 수 있습니까? "bt -> int list"를 사용할 수 없기 때문에 찾을 수없는 것 같습니다.> T.postorder() – hdw3
사용중인 함수 응용 프로그램 구문이 오해의 소지가 있습니다. OCaml은 함수 응용에 괄호를 사용하지 않으며, 단일 인수로 작동하는 이유는 순전히 부수적 인 것입니다. 적절한 구문은'T.create() |> T.push 2 |> T.postorder'입니다. 단일 룰을 괄호로 묶고 함수와 괄호로 묶인 인수 사이의 공백을 제거 할 수 있지만 혼동하지 않는 것이 목적입니다. – glennsl