On Saturday, 22 September 2018 at 01:58:57 UTC, Adam D. Ruppe wrote:
You probably shouldn't name a module the same as a member anyway, and it should also have two names, like "module myproject.isprime;"

But the fix here is to just use the full name.

import isPrime;
void main() {
  isPrime.isPrime(x); // module_name.member_name
}

or change the import:

import isPrime : isPrime; // specify you want the same-named member

Both files are in the same directory. When compiling main.d,

When compiling, be sure to pass both modules to it, or use the dmd -i if on a new version.

dmd -i main.d

or

dmd main.d isPrime.d

main.d:(.text._Dmain[_Dmain]+0x83): undefined reference to `_D7isPrime3isPFiZb'

this likely means you forgot to compile in the isPrime module, so use the above dmd lines

Thanks for your help, Adam! Right after posting my question, I started reading this site:
https://www.tutorialspoint.com/d_programming/d_programming_modules.htm

Based on that and your recommendation, here is what I ended up doing: I changed the filename of isPrime.d to isprime.d and put that in the subdirectory func/:

func/isprime.d:
module func.isprime;
bool isPrime(int n) {
    // check to see if n is prime
}

I then changed main.d to:
import func.isprime;
void main() {
    isPrime(x);
}

Finally, per your suggestion, I compiled it using:
    dmd -i main.d

Thanks again!

Reply via email to