(use-modules (ice-9 regex)
- (srfi srfi-1) ;lists
- (srfi srfi-13) ;strings
- )
+ (ice-9 safe)
+ (oop goops)
+ (srfi srfi-1) ; lists
+ (srfi srfi-13)) ; strings
+
+(define-public safe-module (make-safe-module))
+
+(define-public (myd k v) (display k) (display ": ") (display v) (display ", "))
;;; General settings
;;; debugging evaluator is slower. This should
(begin
(debug-enable 'debug)
(debug-enable 'backtrace)
- (read-enable 'positions)))
+ (read-enable 'positions) ))
(define-public (line-column-location line col file)
(define-public ZERO-MOMENT (ly:make-moment 0 1))
+(define-public (moment-min a b)
+ (if (ly:moment<? a b) a b))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; lily specific variables.
(define-public default-script-alist '())
))
+(define-public (hash-table->alist t)
+ "Convert table t to list"
+ (apply append
+ (vector->list t)
+ ))
+
+;; todo: code dup with C++.
+(define-public (alist->hash-table l)
+ "Convert alist to table"
+ (let
+ ((m (make-hash-table (length l))))
+
+ (map (lambda (k-v)
+ (hashq-set! m (car k-v) (cdr k-v)))
+ l)
+
+ m))
+
+
;;;;;;;;;;;;;;;;
; list
;; TODO: use the srfi-1 partition function.
-(define-public (uniq-list list)
+(define-public (uniq-list l)
+
"Uniq LIST, assuming that it is sorted"
- (if (null? list) '()
- (if (null? (cdr list))
- list
- (if (equal? (car list) (cadr list))
- (uniq-list (cdr list))
- (cons (car list) (uniq-list (cdr list)))))))
+ (define (helper acc l)
+ (if (null? l)
+ acc
+ (if (null? (cdr l))
+ (cons (car l) acc)
+ (if (equal? (car l) (cadr l))
+ (helper acc (cdr l))
+ (helper (cons (car l) acc) (cdr l)))
+ )))
+ (reverse! (helper '() l) '()))
+
(define (split-at-predicate predicate l)
"Split L = (a_1 a_2 ... a_k b_1 ... b_k)
0
(if (< x 0) -1 1)))
+(define-public (symbol<? l r)
+ (string<? (symbol->string l) (symbol->string r)))
+
(define-public (!= l r)
(not (= l r)))
"new-markup.scm"
"bass-figure.scm"
"music-functions.scm"
+ "part-combiner.scm"
"define-music-properties.scm"
"auto-beam.scm"
"chord-name.scm"
"define-translator-properties.scm"
"translation-functions.scm"
"script.scm"
- "drums.scm"
"midi.scm"
"beam.scm"
(,symbol? . "symbol")
(,vector? . "vector")
))
+
+