From 851b8e44c410c5e8a86e924bf9c0666d02e66bed Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 5 Dec 2022 15:50:16 +0200 Subject: [math] Implemented op=, its derivatives and % macros --- src/math.lisp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/math.lisp (limited to 'src') 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)) -- cgit v1.2.3