compat: Add Mes shims for the 'eval' module.

* gash/compat.scm [mes] (string-concatenate-reverse): New procedure.
[mes] (char-pred): New procedure.
[mes] (string-any): New procedure.
[mes] (string-every): Allow character sets and characters as the
predicated (using 'char-pred').
This commit is contained in:
Timothy Sample 2022-04-29 20:42:37 -06:00
parent 4f3ae9e083
commit a584a5bd9c
1 changed files with 17 additions and 1 deletions

View File

@ -18,6 +18,7 @@
(define-module (gash compat)
#:use-module (ice-9 match)
#:use-module (srfi srfi-14)
#:export (if-guile-version-below
when-mes))
@ -85,7 +86,9 @@
make-parameter
parameterize
set-port-line!
string-concatenate-reverse
string-every
string-any
the-eof-object
noop
make-prompt-tag
@ -123,8 +126,21 @@
(define (set-port-line! port line)
#f)
(define (string-concatenate-reverse lst)
(apply string-append (reverse lst)))
(define (char-pred pred)
(cond
((char? pred) (lambda (x) (char=? x pred)))
((char-set? pred) (lambda (x) (char-set-contains? pred x)))
((procedure? pred) pred)
(else (error "Invalid character predicate."))))
(define (string-every pred str)
((@ (srfi srfi-1) every) pred (string->list str)))
((@ (srfi srfi-1) every) (char-pred pred) (string->list str)))
(define (string-any pred str)
((@ (srfi srfi-1) any) (char-pred pred) (string->list str)))
(define the-eof-object (integer->char -1))