diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-04-21 00:26:11 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-04-22 18:24:14 +0200 |
commit | ae7119045e6fae803086000ccd2b54b90f52aa85 (patch) | |
tree | 74928e97c9e521f43374d961a1eb15c4c72191ba | |
parent | Remove define-quick-record macros. (diff) | |
download | calp-ae7119045e6fae803086000ccd2b54b90f52aa85.tar.gz calp-ae7119045e6fae803086000ccd2b54b90f52aa85.tar.xz |
Add iterate procedure.
Diffstat (limited to '')
-rw-r--r-- | module/util.scm | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/module/util.scm b/module/util.scm index 474c7589..4981bb9a 100644 --- a/module/util.scm +++ b/module/util.scm @@ -463,6 +463,14 @@ (let* ((row rest (split-at list width))) (cons row (group rest width))))) +;; repeatedly apply proc to base unitl @var{until} is satisfied. +;; (a → a), (a → bool), a → a +(define-public (iterate proc until base) + (let loop ((o base)) + (if (until o) + o + (loop (proc o))))) + (define-syntax let-env |