Data una firma A
con un tipo di dati t
, diconoCome evitare la ripetizione del tipo di dati SML in strutture e firme?
signature A = sig
datatype t = T of int | S of string
end
E 'possibile fornire un'implementazione (una struttura) che non hanno t
ripetuto? Ad esempio, nella seguente firma, viene ripetuta la definizione di t
. Va bene per piccoli tipi di dati, ma un po 'goffi per quelli più grandi.
structure AImpl : A = struct
datatype t = T of int | S of string
end
La mia intenzione è semplicemente quella di fornire un'interfaccia, in modo che si possano conoscere tutte le dichiarazioni. Ma non voglio che ogni implementazione ripeta la definizione del datatype.
Anche se sembra che una firma e una struttura possano includere entrambi un tipo di dati da un'altra struttura, uno non sarebbe in grado di conoscere la dichiarazione del tipo di dati esaminando solo la firma. Per esempio:
structure AData = struct
datatype t = T of int | S of string
end
signature A = sig
datatype t = datatype AData.t
end
structure a : A = struct
open AData
end
Naturalmente, questo approccio, anche se non che soddisfacente, è accettabile se metto sia AData
e A
nello stesso file .sig
.
che abbia senso. La firma è per nascondere l'implementazione. Ho solo pensato che avrei potuto mettere le funzioni ausiliarie in un'altra struttura (annidata) e aprirla. – shhyou