There are a few I'm aware of:

  1. Rust-style use (multiple imports per statement, renaming items using as)
  2. Java-style import (single import per statement, no renaming (afaik))
  3. Zig-style let xlib = @import("xlib") (imports as assignments)
  4. C-style #include (no importing, just pastes the code of the named file)
you are viewing a single comment's thread
view the rest of the comments
[–] 4 points 1 day ago

Perl's system of use ModuleName LIST is pretty nifty.

The LIST may contain pretty much anything and it's passed to the module's import method (or one that the module has imported in turn from elsewhere). It can be interpreted or parsed freely by that routine.

Usually, it's expected to contain the names of variables and subroutines to be linked into (some might say "pollute") the current namespace, as well as special flags that can import multiple at once, but it can also be left empty with () and then everything in the module has to be referred to by prefix in a very similar way to how C++ does it.

But in theory, you could put an entirely different programming language into that LIST and have the module do magical things with it. If you thought the fact that C++'s template system being Turing complete was insane, this is basically that, but to the next order of magnitude.

  • source