2
OCaml에서 (명백하게) functor의 시그니처가 두 가지 (겉으로보기에는) 전혀 다른 방식으로 정의 될 수 있다는 사실에 다소 혼란 스럽습니다. 예 : Make
위에 지금까지 내가 이해, 예에서OCaml의 Functor 시그널
module type A = sig
type a
end
module type SigA = sig
type t
end
module Make (MA : SigA) :
A with type a := MA.t
module type Make2 = functor (MA : SigA) -> A with type a := MA.t
및 Make2
완전히 동일한 서명하고, 아직 구문은 매우 근본적으로 다른 보이는 다음 .mli 파일에 내가 쓸 수 있습니다. 내가 빠진 것이 있습니까? 어떤 차이가 있습니까?
두 개의 구문 구조가 서로 다른 이유는 무엇입니까? 역사적인 이유? IMO 동일한 목적으로 사용되는 두 개의 별도 구문 구문을 사용하는 것은 나쁜 습관입니다.
좋아 아,보고, 그래서 여러 인수를 지원하는 방법 (많은 멀티 인수와 같은에서 "기본"아니다 함수) –
네, 상황은 함수와 매우 비슷합니다. 예를 들어 부분적으로 모듈을 적용 할 수 있습니다. – gsg