Well you try that but in general someone in a different module discovers this thing you have over here is useful and starts using it and before you know it you have everything tightly coupled to everything else.
not getting the above is hard.
not getting the above is hard.
Obviously, in that case it's perfectly normal and acceptable to either export or make public the thing, if it is a good idea for it to be part of the module interface, or if that's not a good idea factor out the useful thing and make it a 3rd module that both the original and new modules depend one; this should come with some documentation about the interface if it's not obvious or fully specified by the types.