У меня есть этот функтор, который имеет подмодуль:Включить подмодуль приложения функтора
module type PT = sig
type t
val to_string: t -> string
end
module A(P:PT) = struct
module SubA = struct
type t = T of P.t | F of float
end
end
И я хочу, чтобы расширить его с помощью включаемого. Это даже работает:
module Aplus(P:PT) = struct
include A(P)
let print x = print_string (P.to_string x)
end
Но по какой-то причине он не работает для подмодулей.
module Aplus(P:PT) = struct
include A(P)
let print x = print_string (P.to_string x)
module SubAplus = struct
include A(P).SubA (* Syntax error here *)
end
end
Это терпит неудачу с Syntax error
на ссылки подмодуль после применения функтора. Это довольно странно, поскольку это похоже на грамматику языка. Есть ли какая-то конкретная причина для отказа в этом?
Это невозможно сделать со значениями только с типами, типами модулей и типами классов. – ivg
wooops, действительно. – Drup