diff --git a/src/Control/Extend.js b/src/Control/Extend.js new file mode 100644 index 0000000..05c8ecf --- /dev/null +++ b/src/Control/Extend.js @@ -0,0 +1,9 @@ +"use strict"; + +exports.arrayExtend = function(f) { + return function(xs) { + return xs.map(function (_, i, xs) { + return f(xs.slice(i)); + }); + }; +}; diff --git a/src/Control/Extend.purs b/src/Control/Extend.purs index a47046f..28e1523 100644 --- a/src/Control/Extend.purs +++ b/src/Control/Extend.purs @@ -27,6 +27,11 @@ class Functor w <= Extend w where instance extendFn :: Semigroup w => Extend ((->) w) where extend f g w = f \w' -> g (w <> w') +foreign import arrayExtend :: forall a b. (Array a -> b) -> Array a -> Array b + +instance extendArray :: Extend Array where + extend = arrayExtend + infixr 1 extend as <<= -- | A version of `extend` with its arguments flipped.