summaryrefslogtreecommitdiff
path: root/Data/Libraries/Penlight/examples/test-symbols.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Data/Libraries/Penlight/examples/test-symbols.lua')
-rw-r--r--Data/Libraries/Penlight/examples/test-symbols.lua85
1 files changed, 85 insertions, 0 deletions
diff --git a/Data/Libraries/Penlight/examples/test-symbols.lua b/Data/Libraries/Penlight/examples/test-symbols.lua
new file mode 100644
index 0000000..2b80aac
--- /dev/null
+++ b/Data/Libraries/Penlight/examples/test-symbols.lua
@@ -0,0 +1,85 @@
+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)
+
+
+