Reflective Paradigm#

Setting a Variable#

a = 5  # Imperative
assert a == 5

globals()["a"] = 10  # reflective
assert a == 10

Predecessor and Successor#

def _(variable: str) -> float:
    return globals()[variable] - 1


globals()["predecessor"] = _

a = 1
b = 10

assert predecessor("a") == 0
assert predecessor("b") == 9
def _(variable: str) -> float:
    return globals()[variable] + 1


globals()["successor"] = _

a = 0
b = 10

assert successor("a") == 1
assert successor("b") == 11

Addition#

def _(addend_1: str, addend_2: str) -> float:
    return globals()[addend_1] + globals()[addend_2]


globals()["addition"] = _


a = 0
b = 0
assert addition("a", "b") == 0

a = 1
b = 0
assert addition("a", "b") == 1

a = 0
b = 1
assert addition("a", "b") == 1

a = 10
b = 10
assert addition("a", "b") == 20

Multiplication#

def _(multiplicand: str, multiplier: str) -> float:
    return globals()[multiplicand] * globals()[multiplier]


globals()["multiplication"] = _


a = 0
b = 0
assert multiplication("a", "b") == 0

a = 2
b = 0
assert multiplication("a", "b") == 0

a = 0
b = 2
assert multiplication("a", "b") == 0

a = 10
b = 10
assert multiplication("a", "b") == 100

Exponentiation#

def _(base: str, exponent: str) -> float:
    return globals()[base] ** globals()[exponent]


globals()["exponentiation"] = _

a = 1
b = 0
assert exponentiation("a", "b") == 1

a = 0
b = 1
assert exponentiation("a", "b") == 0

a = 3
b = 3
assert exponentiation("a", "b") == 27