aboutsummaryrefslogtreecommitdiff
path: root/frontend/utilities.icl
diff options
context:
space:
mode:
authorclean2000-06-08 11:27:41 +0000
committerclean2000-06-08 11:27:41 +0000
commit28d5e4d213f464c49af40860ad237c593f925e33 (patch)
tree2910327e5bd0b20300da13dea6160e530129090a /frontend/utilities.icl
parentcoercions added though not complete (diff)
JVG: changed mapSt function into macro
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@153 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/utilities.icl')
-rw-r--r--frontend/utilities.icl17
1 files changed, 17 insertions, 0 deletions
diff --git a/frontend/utilities.icl b/frontend/utilities.icl
index 054776c..0e872ac 100644
--- a/frontend/utilities.icl
+++ b/frontend/utilities.icl
@@ -113,6 +113,7 @@ mapAppendSt f [x : xs] tail s
mapAppendSt f [] tail s
= (tail, s)
+/*
mapSt :: !(.a -> (.st -> (.c,.st))) ![.a] !.st -> (![.c],!.st)
mapSt f [x : xs] s
# (x, s) = f x s
@@ -120,6 +121,22 @@ mapSt f [x : xs] s
= ([x : xs], s)
mapSt f [] s
= ([], s)
+*/
+//mapSt :: !(.a -> (.st -> (.c,.st))) ![.a] !.st -> (![.c],!.st)
+mapSt f l s :== mapSt l s
+where
+ mapSt [x : xs] s
+ # (x, s) = f x s
+ mapSt_result = mapSt xs s
+ (xs, _) = mapSt_result
+ #! s = second_of_2_tuple mapSt_result
+ = ([x : xs], s)
+ mapSt [] s
+ = ([], s)
+
+second_of_2_tuple t :== e2
+ where
+ (_,e2) = t
app2St :: !(!.(.a -> .(.st -> (.c,.st))),!.(.e -> .(.st -> (.f,.st)))) !(.a,.e) !.st -> (!(.c,.f),!.st)
app2St (f,g) (x,y) s