I have been experimenting with using functions to make a mini programming language, but can't find out how to turn the function
add(1, 4)
into
(add, 1, 4)
So far I have this:
mem = {}
def inp(text):
return(input(text))
def store(name, value):
mem[str(name)] = value
def get(name):
return(mem[str(name)])
def ifel(con, exp1, exp2):
if con == True:
return(exp1)
else:
return(exp2)
def add(*args):
return(sum(args))
def sub(*args):
last = 0
for each in args:
last = last - each
return(last)
def dev(*args):
last = 0
for index, each in enumerate(args):
if index == 0:
last = each
else:
last = last / each
return(last)
def mul(*args):
last = 0
for index, each in enumerate(args):
if index == 0:
last = each
else:
last = last * each
return(last)
def power(*args):
last = 0
for index, each in enumerate(args):
if index == 0:
last = each
else:
last = pow(last, each)
return(last)
def root(*args):
last = 0
for index, each in enumerate(args):
if index == 0:
last = each
else:
last = pow(last, (1 / each))
return(last)
def say(t):
print(t)
print((5 * (9 ** 4)) / 3)
say(dev(mul(5, power(9, 4)), 3))
I would like to be able to write this as:
(say, (dev, (mul, 5, (power, 9, 5)), 3))
or
(say (dev (mul 5 (power 9 5)) 3))
How could I call a function with the first place in the parentheses? I got inspiration from Lisp syntax, and am trying to recreate my own version.