I'm working on a relatively large SML codebase. It was originally written to compile with MLton, but I'm now working with it under SML/NJ. I need to use RedBlackMapFn
, which is defined in smlnj-lib.cm
. However, I get an error:
elaborate/elaborate-bomenv.fun:9.20-9.27 Error: unbound signature: ORD_KEY
elaborate/elaborate-bomenv.fun:14.21-14.40 Error: unbound functor: RedBlackMapFn
elaborate/elaborate-bomenv.fun:32.20-32.27 Error: unbound signature: ORD_KEY
elaborate/elaborate-bomenv.fun:37.21-37.40 Error: unbound functor: RedBlackMapFn
So I assume that smlnj-lib.cm
is not being pulled by CM. In an effort to fix this, I added $/smlnj-lib.cm
to the sources.cm
file in the directory that I'm working in. This causes a separate issue:
elaborate/sources.cm:25.1-25.18 Error: structure Random imported from $SMLNJ-LIB/Util/smlnj-lib.cm@243997(random.sml) and also from ./(sources.cm):lib/(sources.cm):basic/(sources.cm):random.sml
elaborate/sources.cm:25.1-25.18 Error: structure Queue imported from $SMLNJ-LIB/Util/smlnj-lib.cm@436143(queue.sml) and also from ./(sources.cm):lib/(sources.cm):basic/(sources.cm):two-list-queue.sml
No dice. I tried removing the Random
structure that's coming from ./(sources.cm):lib/(sources.cm):basic/(sources.cm):random.sml
, but it appears that it isn't equivalent to the one defined in the standard library, so I can't just substitute one for the other.
I'd like to use something like Python's import ... from ... as ...
mechanism to give a new name to the Random
that's coming from the standard library, but CM's documentation doesn't offer any hints as to how I'd go about that.
How can I resolve a module naming conflict across multiple SML files?
$/smlnj-lib.cm
if it would cause a naming conflict (like it is for me). I can get atRedBlackMapFn
in other SML code that I've written, but not in this project. – Patrick CollinsRedBlackMapFn
in a separately compiled module implementing a signature that hides the second declaration ofrandom
? Disclaimer: There's a reason this is a comment and not an answer. – ben rudgersRedBlackMapFn
off into a separate.cm
file and that worked. It's kind of ugly though. It would be nice to know if there's a better way. – Patrick Collins