diff options
Diffstat (limited to 'sucl')
-rw-r--r-- | sucl/basic.dcl | 3 | ||||
-rw-r--r-- | sucl/basic.icl | 3 |
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] |