define(['./unique', './filter', './some', './contains', './slice'], function (unique, filter, some, contains, slice) { /** * Return a new Array with elements that aren't present in the other Arrays. */ function difference(arr) { var arrs = slice(arguments, 1), result = filter(unique(arr), function(needle){ return !some(arrs, function(haystack){ return contains(haystack, needle); }); }); return result; } return difference; });