]> git.donarmstrong.com Git - lilypond.git/commitdiff
Simplify hash-table->alist, alist->hash-table, functional-or, functional-and, list...
authorDavid Kastrup <dak@gnu.org>
Fri, 5 Oct 2012 06:52:08 +0000 (08:52 +0200)
committerDavid Kastrup <dak@gnu.org>
Fri, 4 Jan 2013 08:08:31 +0000 (09:08 +0100)
scm/lily-library.scm

index fdd8cbfd3df5c2d51066427c84f0fbdd3d884d29..cd9fb5b9a23ec4c75fd5430ceb8089a56aa5a737 100644 (file)
@@ -471,30 +471,23 @@ For example:
 ;; hash
 
 (define-public (hash-table->alist t)
-  (hash-fold (lambda (k v acc) (acons  k v  acc))
-            '() t))
+  (hash-fold acons '() t))
 
 ;; todo: code dup with C++.
 (define-safe-public (alist->hash-table lst)
   "Convert alist to table"
   (let ((m (make-hash-table (length lst))))
-    (map (lambda (k-v) (hashq-set! m (car k-v) (cdr k-v))) lst)
+    (for-each (lambda (k-v) (hashq-set! m (car k-v) (cdr k-v))) lst)
     m))
 
 ;;;;;;;;;;;;;;;;
 ;; list
 
 (define (functional-or . rest)
-  (if (pair? rest)
-      (or (car rest)
-          (apply functional-or (cdr rest)))
-      #f))
+  (any identity rest))
 
 (define (functional-and . rest)
-  (if (pair? rest)
-      (and (car rest)
-          (apply functional-and (cdr rest)))
-      #t))
+  (every identity rest))
 
 (define (split-list lst n)
   "Split LST in N equal sized parts"
@@ -512,14 +505,7 @@ For example:
   (helper lst (make-vector n '()) (1- n)))
 
 (define (list-element-index lst x)
-  (define (helper todo k)
-    (cond
-     ((null? todo) #f)
-     ((equal? (car todo) x) k)
-     (else
-      (helper (cdr todo) (1+ k)))))
-
-  (helper lst 0))
+  (list-index (lambda (m) (equal? m x))))
 
 (define-public (count-list lst)
   "Given @var{lst} as @code{(E1 E2 .. )}, return