For a simple hello world program in D,
imports are needed.
import statement makes all public functions
and types from the given module available.
The standard library, called Phobos,
is located under the package
and its modules are referenced through
import statement can also be used to selectively
import certain symbols of a module:
import std.stdio : writeln, writefln;
Selective imports can be used to improve readability by making it obvious where a symbol comes from, and also as a way to prevent clashing of symbols with the same name from different modules.
import statement does not need to appear at the top of a source file.
It can also be used locally within functions or any other scope.
D's module system - in contrast to other systems - is entirely based on files.
my.cat always refers to a file
cat.d in the folder
my needs to be in the current working directory or
in one of the explicitly specified directory imports (
Lastly, to ease splitting big modules up into multiple smaller files,
cat.d, a folder
cat/ could be used as well.
The D compiler would then try to load
my/cat/package.d instead of
The convention (but not a hard rule) for
package.d files is to publicly import
all other modules in the same folder.