emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/sketch-mode 0005a3a 27/38: Add sketch-mapcons function


From: ELPA Syncer
Subject: [elpa] externals/sketch-mode 0005a3a 27/38: Add sketch-mapcons function (refactor sketch--circle-radius)
Date: Wed, 15 Sep 2021 16:57:38 -0400 (EDT)

branch: externals/sketch-mode
commit 0005a3adbc8ee355a96a2eb6f73485b74d8360c7
Author: Daniel Nicolai <dalanicolai@gmail.com>
Commit: Daniel Nicolai <dalanicolai@gmail.com>

    Add sketch-mapcons function (refactor sketch--circle-radius)
---
 sketch-mode.el | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/sketch-mode.el b/sketch-mode.el
index 7c16703..d574b61 100644
--- a/sketch-mode.el
+++ b/sketch-mode.el
@@ -196,9 +196,29 @@ transient."
     (,(kbd "C-c C-s") . sketch-transient))
   (undo-tree-mode))
 
+(defun sketch-mapcons (fn &rest cons-cells)
+  "Apply FN to list of car's and cdr's of CONS-CELLS.
+Return a single cons cell."
+  (cons (apply fn (mapcar #'car cons-cells))
+        (apply fn (mapcar #'cdr cons-cells))))
+
+(defun sketch-norm (vec)
+  "Return norm of a vector.
+VEC should be a cons or a list containing only number elements."
+  (let ((sum-of-squares (if (consp vec)
+                            (+ (expt (car vec) 2)
+                               (expt (cdr vec) 2))
+                          (apply #'+
+                                 (mapcar (lambda (x) (* x x))
+                                         vec)))))
+    (expt sum-of-squares (/ 1.0 (if (consp vec)
+                                    2
+                                  (length vec))))))
+
 (defun sketch--circle-radius (start-coords end-coords)
-  (sqrt (+ (expt (- (car end-coords) (car start-coords)) 2)
-           (expt (- (cdr end-coords) (cdr start-coords)) 2))))
+  (sketch-norm
+   (sketch-mapcons #'- end-coords start-coords)))
+
  (defun sketch--rectangle-coords (start-coords end-coords)
   (let ((base-coords (cons (apply #'min (list (car start-coords) (car 
end-coords)))
                            (apply #'min (list (cdr start-coords) (cdr 
end-coords))))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]