6.6.1 Explicit manipulation of the calling context
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • Modules
        • Overruling Module Boundaries
          • Explicit manipulation of the calling context
            • @/2
    • Packages
Availability:built-in
Source@(:Goal, +Module)
Execute Goal, setting the calling context to Module. Setting the calling context affects meta-predicates, for which meta arguments are qualified with Module and transparent predicates (see module_transparent/1). It has no implications for other predicates.

For example, the code asserta(done)@world is the same as asserta(world:done). Unlike in world:asserta(done), asserta/1 is resolved in the current module rather than the module world. This makes no difference for system predicates, but usually does make a difference for user predicates.

Not that SWI-Prolog does not define @ as an operator. Some systems define this construct using op(900, xfx, @).