src/utils.lisp @ dcf7b53a54df

Episode 12: Edge Handling (2)
author Steve Losh <steve@stevelosh.com>
date Sun, 17 Apr 2016 21:16:39 +0000
parents 21b9503510dc
children 2278039315fa
(in-package #:coding-math.utils)

(defun dividesp (n divisor)
  "Return whether `n` is evenly divisible by `divisor`."
  (zerop (mod n divisor)))


(defmacro mulf (place n &environment env)
  "Multiply `place` by `n` in-place."
  (multiple-value-bind (temps exprs stores store-expr access-expr)
      (get-setf-expansion place env)
    `(let* (,@(mapcar #'list temps exprs)
            (,(car stores) (* ,n ,access-expr)))
       ,store-expr)))