aboutsummaryrefslogtreecommitdiff
path: root/sucl
diff options
context:
space:
mode:
Diffstat (limited to 'sucl')
-rw-r--r--sucl/basic.dcl3
-rw-r--r--sucl/basic.icl3
2 files changed, 6 insertions, 0 deletions
diff --git a/sucl/basic.dcl b/sucl/basic.dcl
index c0d1de8..0f2118f 100644
--- a/sucl/basic.dcl
+++ b/sucl/basic.dcl
@@ -118,6 +118,9 @@ mappair :: .(.a -> .b) .(.c -> .d) !(.a,.c) -> (.b,.d)
// Map a function onto the second element of a 2-tuple.
mapsnd :: v:(.a -> .b) -> u:((.c,.a) -> (.c,.b)), [u <= v]
+// Map a function on the second element of a triple.
+mapsnd3 :: v:(.a -> .b) -> u:((.c,.a,.d) -> (.c,.b,.d)), [u <= v]
+
// Map a function onto the tail of a list.
maptl :: .(x:[.a] -> u:[.a]) !w:[.a] -> v:[.a], [u <= v, w <= x]
diff --git a/sucl/basic.icl b/sucl/basic.icl
index 425f29f..a8bfcdf 100644
--- a/sucl/basic.icl
+++ b/sucl/basic.icl
@@ -198,6 +198,9 @@ mappair f g (x,y) = (f x,g y)
mapsnd :: v:(.a -> .b) -> u:((.c,.a) -> (.c,.b)), [u <= v]
mapsnd f = app2 (id,f)
+mapsnd3 :: v:(.a -> .b) -> u:((.c,.a,.d) -> (.c,.b,.d)), [u <= v]
+mapsnd3 f = app3 (id,f,id)
+
maptl :: .(x:[.a] -> u:[.a]) !w:[.a] -> v:[.a], [u <= v, w <= x]
maptl f [] = []
maptl f [x:xs] = [x:f xs]