fun order fnames =
let
- fun doFile fname =
- let
- val file = Parse.parse fname
- val (provide, require) = fileSig file
- in
- print "\nFile ";
- print fname;
- print "\nPROVIDE:\n";
- printSig provide;
- print "\nREQUIRE:\n";
- printSig require
- end
-
fun doFile (fname, (provideC, provideT, provideV, require)) =
let
val file = Parse.parse fname
SS.app (fn fname' => (print " "; print fname')) requires;
print "\n")) require;*)
- loop (ready, waiting, [])
+ ({provideC = provideC,
+ provideT = provideT,
+ provideV = provideV},
+ loop (ready, waiting, []))
end
+type providers = {provideC : string SM.map,
+ provideT : string SM.map,
+ provideV : string SM.map}
+
+fun providesContext (p : providers, s) = SM.find (#provideC p, s)
+fun providesType (p : providers, s) = SM.find (#provideT p, s)
+fun providesValue (p : providers, s) = SM.find (#provideV p, s)
+
end