# Example `test-symbols.lua`

    require 'pl'

    -- force us to look in the script's directory when requiring...

    app.require_here()

    require 'symbols'

    local MT = getmetatable(_1)

    add = MT.__add

    mul = MT.__mul

    pow = MT.__pow

    function testeq (e1,e2)

        if not equals(e1,e2) then

            print ('Not equal',repr(e1),repr(e2))

        end

    end

    sin = register(math.sin,'sin')

    f = register(function(x,y,z) end)

    --[[

    testeq (_1,_1)

    testeq (_1+_2,_1+_2)

    testeq (_1 + 3*_2,_1 + 3*_2)

    testeq (_2+_1,_1+_2)

    testeq (sin(_1),sin(_1))

    testeq (1+f(10,20,'ok'),f(10,20,'ok')+1)

    --]]

    function testexpand (e)

        print(repr(fold(expand(e)))) --fold

    end

    --[[

    testexpand (a*(a+1))

    testexpand ((x+2)*(b+1))

    ]]--

    function testfold (e)

        print(repr(fold(e)))

    end

    a,b,c,x,y = Var 'a,b,c,x,y'

    --~ testfold(_1 + _2)

    --~ testfold(add(10,20))

    --~ testfold(add(mul(2,_1),mul(3,_2)))

    --[[

    testfold(sin(a))

    e = a^(b+2)

    testfold(e)

    bindval(b,1)

    testfold(e)

    bindval(a,2)

    testfold(e)

    bindval(a)

    bindval(b)

    ]]

    function testdiff (e)

        balance(e)

        e = diff(e,x)

        balance(e)

        print('+ ',e)

        e = fold(e)

        print('- ',e)

    end

    testdiff(x^2+1)

    testdiff(3*x^2)

    testdiff(x^2 + 2*x^3)

    testdiff(x^2 + 2*a*x^3 + x^4)

    testdiff(2*a*x^3)

    testdiff(x*x*x)

generated by LDoc 1.3.12