scope v1.0.0 Scope

Scope is a small module that provides two macros to facilitate function overload and local import/aliases execution.

Overload functions

import Scope 
overload [+: 2, -: 2], from: Kernel, with: Test
1 + 3 - 2 # gives [2, [1, 3]]

Local importation

You can just import one or more module :

import Scope 
x = local System do
  user_home <> " !"
end

# Or multiple module
y = local Elixir.{System, Path} do 
  absname(user_home())
end

# Or specifics function from a module 
z = local [user_home: 0, user_home!: 0] in System do 
  user_home <> " !"
end

You can also directly use an expression:

import Scope 

a = local (overload [+: 2, -: 2], from: Kernel, with: Test) do 
  1 + 2 - 3
end

b = 1 + 2 - 3 

# a == [3, [1, 2]]
# b == 0

c = local (import Test) do 
  a = 1 + 2 
  b = 1 - 2 
  a - b 
end

Summary

Functions

Generate the execution of a lambda, with the importation of the gived module expression

Import module from except the gived functions and import module with with only the gived functions

Functions

local(module_expr, body) (macro)

Generate the execution of a lambda, with the importation of the gived module expression.

overload(methods, list) (macro)

Import module from except the gived functions and import module with with only the gived functions.

This is mainly useful for overloading operators used in Kernel. (Arithmetics operators for example)