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.
 
     
    