From ae7119045e6fae803086000ccd2b54b90f52aa85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 21 Apr 2020 00:26:11 +0200 Subject: Add iterate procedure. --- module/util.scm | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'module') 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 -- cgit v1.2.3