Ich versuche herauszufinden, wie eine Funktion in Abhängigkeit von einem Modul mit einem parametrischen Typ schreiben, aber ich kann nirgends etwas ähnliches finden. Ich habe versucht, das Problem so weit wie möglich zu reduzieren und endete mit diesem Dummy-Beispiel.Parametric vor Ort abstrakten Typ
module type Mappable = sig
type 'a t
val map : ('a -> 'b) -> 'a t -> 'b t
end
let plus (type m) (module M : Mappable with type 'a t = 'a m) (xs : int m) =
M.map (fun x -> x + 1) xs
, was den Fehler Error: Syntax error: module-expr expected
ergibt.
Wenn ich die 'a
ablege, erhalte ich den folgenden Fehler.
Error: In this `with' constraint, the new definition of t
does not match its original definition in the constrained signature:
Type declarations do not match: type t is not included in type 'a t
They have different arities.
Was ist die richtige Syntax, um dies zu tun?