diff options
| author | Thomas Bauereiss | 2017-10-19 15:14:28 +0100 |
|---|---|---|
| committer | Thomas Bauereiss | 2017-10-19 15:41:28 +0100 |
| commit | eaa4a5efa3789efdb5eab4e60225becd5859d0e8 (patch) | |
| tree | e5af527af85fef1d77e3272e877a4a0836387e42 /src/gen_lib/prompt.lem | |
| parent | c316e9f9741413219d4824a578bd294ef2561a97 (diff) | |
Make some potentially non-terminating library functions terminate
Diffstat (limited to 'src/gen_lib/prompt.lem')
| -rw-r--r-- | src/gen_lib/prompt.lem | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gen_lib/prompt.lem b/src/gen_lib/prompt.lem index f5ac8fc5..23f81f0e 100644 --- a/src/gen_lib/prompt.lem +++ b/src/gen_lib/prompt.lem @@ -158,7 +158,7 @@ let footprint = Footprint (Done (),Nothing) val foreachM_inc : forall 'vars 'r. (integer * integer * integer) -> 'vars -> (integer -> 'vars -> MR 'vars 'r) -> MR 'vars 'r let rec foreachM_inc (i,stop,by) vars body = - if i <= stop + if (by > 0 && i <= stop) || (by < 0 && stop <= i) then body i vars >>= fun vars -> foreachM_inc (i + by,stop,by) vars body @@ -167,11 +167,11 @@ let rec foreachM_inc (i,stop,by) vars body = val foreachM_dec : forall 'vars 'r. (integer * integer * integer) -> 'vars -> (integer -> 'vars -> MR 'vars 'r) -> MR 'vars 'r -let rec foreachM_dec (i,stop,by) vars body = - if i >= stop +let rec foreachM_dec (stop,i,by) vars body = + if (by > 0 && i >= stop) || (by < 0 && stop >= i) then body i vars >>= fun vars -> - foreachM_dec (i - by,stop,by) vars body + foreachM_dec (stop,i - by,by) vars body else return vars val while_PP : forall 'vars. bool -> 'vars -> ('vars -> bool) -> ('vars -> 'vars) -> 'vars |
