From f482ecdb4ec3cd0ecf4698a2917e971aab31f2ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 16 Nov 2018 00:08:53 +0100 Subject: Add modify to (control monad state). --- control/monad/state.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/control/monad/state.scm b/control/monad/state.scm index 72a3041..603e387 100644 --- a/control/monad/state.scm +++ b/control/monad/state.scm @@ -2,8 +2,8 @@ #:use-module (oop goops) #:use-module (ice-9 match) #:use-module (control monad) - #:export (return-state run-state get put) #:re-export (>>= >>)) + #:export (return-state run-state get put modify)) ;; Alternative implementation of get. @@ -66,6 +66,11 @@ "Sets st to v." (list '() v)) +(define-stateful ((modify proc) st-list) + (match st-list + ((r s) + (list '() (proc s))))) + (define-method (run-state (st ) init) "Exec state with init as starting state value and st." ((proc st) (list init init))) -- cgit v1.2.3