(string<? (symbol->string (car x))
(symbol->string (car y))))
-(define-public (chain-assoc x alist-list)
- (if (null? alist-list)
- #f
- (let* ((handle (assoc x (car alist-list))))
- (if (pair? handle)
- handle
- (chain-assoc x (cdr alist-list))))))
-
(define-public (chain-assoc-get x alist-list . default)
"Return ALIST entry for X. Return DEFAULT (optional, else #f) if not
found."
(define-public interval-end cdr)
+(define-public (interval-bound interval dir)
+ ((if (= dir RIGHT) cdr car) interval))
+
(define-public (interval-index interval dir)
"Interpolate INTERVAL between between left (DIR=-1) and right (DIR=+1)"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-
-
+;; string
+
+(define-public (string-endswith s suffix)
+ (equal? suffix (substring s
+ (max 0 (- (string-length s) (string-length suffix)))
+ (string-length s))))
+
+(define-public (string-startswith s prefix)
+ (equal? prefix (substring s 0 (min (string-length s) (string-length prefix)))))
+
(define-public (string-encode-integer i)
(cond
((= i 0) "o")
(make-string 1 (integer->char (+ 65 (modulo i 26))))
(string-encode-integer (quotient i 26))))))
-(define-public (ly:numbers->string lst)
- (string-join (map ly:number->string lst) " "))
-
(define (number->octal-string x)
(let* ((n (inexact->exact x))
(n64 (quotient n 64))
0
(if (< x 0) -1 1)))
-(define-public (car< a b) (< (car a) (car b)))
+
+(define-public (car< a b)
+ (< (car a) (car b)))
(define-public (symbol<? lst r)
(string<? (symbol->string lst) (symbol->string r)))