Thanks very much for that information. I will look into seeing what can be done. (I haven't understood that code for handling byte-backward issues for at least 35 years, if I ever did, even though I'm quite sure I wrote it. I hope I'm not too old to relearn it....)
So I guess the accepted way to do these things would be to use union types? And storing under one type and retrieving through the other? Hmmm. If that would work, that would require having an extra memory location for the union variable and the copy. If this would work, and it's worth the trouble, I could look into it.
You found another way file times are tested. OK. I've made changes to the system, as you suggested. Maybe now we've found them all? Thanks for your patience.
I've committed the changes. Alvin, can you try again?
I see I didn't change all the places that file times were checked. I've found and changed more. I will see if it passes the testsuite, and if so, commit the changes. Stay tuned....
Yes, explicit module modifiers override the module associated with the symbol (at least in all places we remembered to add the necessary code :-).
I think I know what is going on. Note that the predicate/functor maplist appears both as maplist/3 as the outer call (as a predicate) and as maplist/1 (as the functor of the first argument to the outer call). Now the definition of maplist probably makes a call of the form call(P,X,Y). Now call/3 uses the module of the first argument to make the predicate symbol for the resulting call. So here the maplist/1 functor is not imported, so it is in usermod, and thuse the maplist/3 call is also to maplist...
Thanks for letting us know. It was in an internal C function, make_ground, which is called by excess_vars, which is called by setof, which is called by predicate_property. It didn't handle the arity=0 case. I've fixed it and will commit it after running the testsuite. Thanks!