Пример #1
0
def change_args():
    const_1 = function('CONST', 1)
    const_2 = function('CONST', 2)
    sum_1_2 = function('SUM', const_1, const_2)
    print(sum_1_2())
    sum_2_2 = sum_1_2
    sum_2_2.args = [const_2, const_2]
    print(sum_2_2())
Пример #2
0
def mul_of_variables():
    x = mkv('x')
    y = mkv('y')
    c1 = mkc(1)
    c2 = mkc(2)
    bound = bind(x, c1)
    bound = bind(y, c2)
    x_times_y = function('MUL', x, y)
    x_times_y2 = function('MUL', x_times_y, y)
    print(f"x times y^2: {x_times_y2()}")
Пример #3
0
def bind_variable_to_variable_to_constant():
    # x = y = 2; eval y, x
    x = mkv('x')
    y = mkv('y')
    c2 = mkc(2)
    bind_y_to_2 = function('BIND', y, c2)
    bind_y_to_2()
    bind_x_to_y = function('BIND', x, y)
    bind_x_to_y()
    print(f"y is {y()}, x is {x()}")
Пример #4
0
def derivative_polynomial():
    x = mkv('x')
    # +(+(1, x), *(x, x))
    c1_plus_x_plus_x2 = function('SUM', function('SUM', mkc(1), x),
                                 function('MUL', x, x))
    derivative_expr = function('DER', c1_plus_x_plus_x2, x)
    c0_plus_c1_plus_x = derivative_expr()
    print(f"D[1+x+x^2, x] = {c0_plus_c1_plus_x}")
    print(f"D[1+x+x^2, x] -evaluated-> {c0_plus_c1_plus_x()}: still UNBOUND")
    bound = bind(x, to=mkc(3))
    print(
        f"x = 3; D[1+x+x^2, x] -evaluated-> = {c0_plus_c1_plus_x()}: (1 + 2x)|_(x=3) == 7"
    )
Пример #5
0
def mkv(name):
    """
    make variable
    :param name: name as string
    :return:
    """
    return function('VAR', name)
Пример #6
0
def mkc(value):
    """
    make constant
    :param value:
    :return:
    """
    return function('CONST', value)
Пример #7
0
def sum_of_variables():
    x = mkv('x')
    y = mkv('y')
    c1 = mkc(1)
    bound = bind(x, c1)
    x_plus_y = function('SUM', x, y)
    print(f"x = 1; x + y is: {x_plus_y()}")
    bound = bind(y, c1)
    print(f"y = 1; x + y is now: {x_plus_y()}")
Пример #8
0
def bind(var, to):
    """
    bind variable node to another function node
    :param var: variable to bind
    :param to: target function for binding
    :return: returns the bind node, if needed
    """
    assignment = function('BIND', var, to)
    assignment()
    return assignment  # if needed
Пример #9
0
def constant_from_constant():
    const_3bis = function('CONST', mkc(3))
    print(const_3bis())
Пример #10
0
def derivate_symbol():
    f = mkv('x')
    df_dx = function('DER', f, mkv('x'))
    f_prime = df_dx()
    print(f"dx/dx is: {f_prime()}")
Пример #11
0
def derivate_constant():
    derivative_expr = function('DER', mkc(5), mkv('x'))
    derivated_func = derivative_expr()
    print(derivated_func())
Пример #12
0
def derivate_raw_primitive():
    derivative_expr = function('DER', 2, mkv('x'))
    derivated_func = derivative_expr()
    print(derivated_func())
Пример #13
0
def negative_constant():
    one = mkc(1)
    minus_one = function('NEG', one)
    print(minus_one())
Пример #14
0
def constant_from_constant():
    sum_c = function('SUM', mkc(3), mkc(4))
    # note: c represents a function, not its value. Its value is c(), obtained when evaluated
    print(sum_c())
Пример #15
0
def multiply_constants():
    mul_6 = function('MUL', mkc(2), mkc(3))
    print(mul_6())
Пример #16
0
def constant_from_value():
    const_3 = function('CONST', 3)
    print(const_3())
Пример #17
0
def bind_to_raw_value():
    bind_x = function('BIND', function('VAR', 'x'), 2)
    bind_x()
Пример #18
0
def bind_to_constant():
    var_x = function('VAR', 'x')
    bind_x = function('BIND', var_x, mkc(1))
    bind_x()
    print(var_x())
Пример #19
0
def create_and_evaluating_unbound_variable():
    x = function('VAR', 'x')
    print(x())
Пример #20
0
def sum_from_raw_constants():
    sum_raw = function('SUM', 1, 2)
    print(sum_raw())
Пример #21
0
def bind_with_literal_name():
    bind_x = function('BIND', 'x', mkc(2))
    bind_x()
Пример #22
0
def sum_sums():
    sum_1_2_1_3 = function('SUM', function('SUM', mkc(1), mkc(2)),
                           function('SUM', mkc(1), mkc(3)))
    print(sum_1_2_1_3())  # should be 7 + 10 = 17
Пример #23
0
from library import function

function()
Пример #24
0
def null_function():
    null = function()
    null()