aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/math.lisp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/math.lisp b/src/math.lisp
new file mode 100644
index 0000000..06931ff
--- /dev/null
+++ b/src/math.lisp
@@ -0,0 +1,33 @@
+(in-package senzill.math)
+
+(defmacro % (number divisor)
+ "Different name for the mod function"
+ `(mod ,number ,divisor))
+
+(defmacro op= (operation value &rest others)
+ "Executes operation on all values and stores result in first argument"
+ `(setf ,value (apply ,operation ,value ',others)))
+
+(defmacro += (value &rest numbers)
+ "Sums all numbers and stores result in name (first argument)"
+ `(op= '+ ,value ,@numbers))
+
+(defmacro ++_ (value)
+ "Adds increments value by one"
+ `(+= ,value 1))
+
+(defmacro -= (value &rest numbers)
+ "Adds all numbers and stores result in name (first argument)"
+ `(op= '- ,value ,@numbers))
+
+(defmacro -- (value)
+ "Decrements value by one"
+ `(-= ,value 1))
+
+(defmacro /= (value &rest numbers)
+ "Divides all numbers and stores result in name (first argument)"
+ `(op= '/ ,value ,@numbers))
+
+(defmacro *= (value &rest numbers)
+ "Multiplies all numbers and stores result in name (first argument)"
+ `(op= '* ,value ,@numbers))