모듈 유형 PROP
과 일치하는 EEA
을 비롯한 여러 모듈을 만들었습니다. 지금은 다음과 같은 2 펑터를 구축하고 싶습니다 : 재귀가 있기 때문에여러 펑터 내에서 재귀 실현
(* modules.ml *)
open EEA
open Zone
open Zones
module ZoneEEA = ZoneFun(EEA)
module ZonesEEA = ZonesFun(ZoneEEA)
그러나, 코드가 작동하지 않습니다
(* zone.ml *)
module type ZONE =
sig
...
end
module ZoneFun (Prop : PROP) = struct
type t =
{ i: int;
pal: ZonesEEA.t }
...
end
(* zones.ml *)
module ZonesFun (Zone: ZONE) = struct
type t = Zone.t list
...
end
는 따라서 펑 날 모듈을 구축 할 수 있도록 할 : ZoneFun
... 따라서 ZoneFun
, ZoneEEA
에서 제공하는 ZonesEEA.t
필요
사람이 재귀를 실현하기 위해 코드를 재구성 할 생각이 있습니까?
당신이 ZoneFun.t''필드'pal'의 유형을 추출 또는'의 구현을 않는 경우는 OK 있을까 ZoneFun'은 그것에 의존합니까? 기본적으로 묻는 것은,'ZoneFun'의'ZonesEEA'에 대한 종속성을 제거 할 수 없습니까? – nickie
'ZoneFun'의 구현은 실제로'pal'에 의존하지 않지만'ZoneEEA.t'는'ZonesEEA.t' 유형의 필드'pal'를 갖기를 원합니다. 나는 당신이 "ZoneFun.t'에서 필드'pal'를 추상화 한 것을 정확히 모른다 ... – SoftTimur