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