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

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

[elpa] externals/gnugo ed11a74 101/357: [gnugo int] Embrace (NODE[...] [


From: Stefan Monnier
Subject: [elpa] externals/gnugo ed11a74 101/357: [gnugo int] Embrace (NODE[...] [SUBTREE...]) IR, for now.
Date: Sun, 29 Nov 2020 14:50:58 -0500 (EST)

branch: externals/gnugo
commit ed11a74d0d3b7be11010cc4112f3183beae229a5
Author: Thien-Thi Nguyen <ttn@gnu.org>
Commit: Thien-Thi Nguyen <ttn@gnu.org>

    [gnugo int] Embrace (NODE[...] [SUBTREE...]) IR, for now.
    
    It's not so bad, after all.  OTOH, hanging by the leaves is better.
    
    * packages/gnugo/gnugo.el (gnugo/sgf-read-file TREE): Use ‘nconc’.
    (gnugo/sgf-write-file >>tree): Use ‘dolist’.
---
 gnugo.el | 27 +++++++--------------------
 1 file changed, 7 insertions(+), 20 deletions(-)

diff --git a/gnugo.el b/gnugo.el
index 5a0ef59..d434cab 100644
--- a/gnugo.el
+++ b/gnugo.el
@@ -2184,11 +2184,8 @@ starting a new one.  See `gnugo-board-mode' 
documentation for more info."
                                       (setq SZ (cdr prop)))
                                     prop))))
          (TREE (lev) (prog1
-                         ;; hmm
-                         ;;  ‘append’ => ([NODE...] [SUBTREE...])
-                         ;;  ‘cons’   => (([NODE...]) . [SUBTREE...])
-                         ;; see consequent hair in -write-file
-                         (append
+                         ;; produce (NODE[...] [SUBTREE...])
+                         (nconc
                           ;; nodes
                           (loop while (seek ?\;)
                                 collect (NODE))
@@ -2253,21 +2250,11 @@ starting a new one.  See `gnugo-board-mode' 
documentation for more info."
                  (unless (zerop (current-column))
                    (newline))
                  (insert "(")
-                 ;; The IR (see "hmm" above) prioritizes space
-                 ;; efficiency; no cost if no subtrees (common case).
-                 ;; The downside, however, is that subtree access
-                 ;; requires this somewhat-funky border search.
-                 (let (x subtrees)
-                   (while (setq x (pop tree))
-                     (if (gnugo--nodep x)
-                         (>>node x)
-                       (setq
-                        ;; Add back the first subtree.
-                        subtrees (cons x tree)
-                        ;; Arrange to stop searching.
-                        tree nil)))
-                   (dolist (sub subtrees)
-                     (>>tree sub)))
+                 (dolist (x tree)
+                   (funcall (if (gnugo--nodep x)
+                                #'>>node
+                              #'>>tree)
+                            x))
                  (insert ")")))
       (with-temp-buffer
         (dolist (tree collection)



reply via email to

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