úÎ;69g      portable experimentalleon@melding-monads.com returns  I if the elements of a list occur in non-descending order, equivalent to  (!)  returns  N if the predicate returns true for all adjacent pairs of elements in the list  returns  , if the element appears in the ordered list " is the non-overloaded version of   returns  k if the element appears in the list; it is a function from an ordered list to its characteristic function. " is the non-overloaded version of  B inserts an element into a list, allowing for duplicate elements  " is the non-overloaded version of   c inserts an element into an ordered list, or replaces the first occurrence if it is already there.  " is the non-overloaded version of    1 computes the intersection of two ordered lists. @ The result contains those elements contained in both arguments  isect [1,3,5] [2,4,6] == []  isect [2,4,6,8] [3,6,9] == [6] ( isect [1,2,2,2] [1,1,1,2,2] == [1,2,2]  " is the non-overloaded version of   * computes the union of two ordered lists. B The result contains those elements contained in either argument; H elements that appear in both lists are appear in the result only once. ! union [1,3,5] [2,4,6] == [1..6] * union [2,4,6,8] [3,6,9] == [2,3,4,6,8,9] . union [1,2,2,2] [1,1,1,2,2] == [1,1,1,2,2,2] " is the non-overloaded version of  8 computes the multiset difference of two ordered lists. f Each occurence of an element in the second argument is removed from the first list, if it is there. " minus [1,3,5] [2,4,6] == [1,3,5] $ minus [2,4,6,8] [3,6,9] == [2,4,8] $ minus [1,2,2,2] [1,1,1,2,2] == [2] " is the non-overloaded version of  = computes the multiset exclusive union of two ordered lists. O The result contains those elements that appear in either list, but not both. " xunion [1,3,5] [2,4,6] == [1..6] ' xunion [2,4,6,8] [3,6,9] == [2,3,4,8] ) xunion [1,2,2,2] [1,1,1,2,2] == [1,1,2] " is the non-overloaded version of  · combines all elements of two ordered lists. The result contains those elements that appear in either list; elements that appear in both lists appear in the result multiple times. ( merge [1,3,5] [2,4,6] == [1,2,3,4,5,6] , merge [2,4,6,8] [3,6,9] == [2,3,4,6,6,8,9] 4 merge [1,2,2,2] [1,1,1,2,2] == [1,1,1,1,2,2,2,2,2] " is the non-overloaded version of  = returns true if the first list is a sub-list of the second. " is the non-overloaded version of  6 provides the decorate-sort-undecorate idiom, aka the "Schwartzian transform" This variant of J recomputes the function to sort on every comparison. This can is better B for functions that are cheap to compute, including projections.  is equivalent to  " 0, except somewhat more efficient as duplicates ^ are removed as it sorts. It is essentially Data.List.sort, a mergesort by Ian Lynagh, with   replaced by . " is the non-overloaded version of  ' provides decorate-sort-undecorate for  This variant of . recomputes the function for each comparison. On ordered lists,  is equivalent to  Data.List.nub, except that K it runs in linear time instead of quadratic. On unordered lists it also ? removes elements that are smaller than any preceding element.  nub [1,1,1,2,2] == [1,2]  nub [2,0,1,3,3] == [2,3]  nub = nubBy (<) 7 is the greedy algorithm that returns a sublist of its  input such that  is true. ) isSortedBy pred (nubBy pred xs) == True     #      !"#$%&'()*+data-ordlist-0.2Data.List.Orderedbase Data.ListsortsortByisSorted isSortedBymembermemberByhashasBy insertBag insertBagBy insertSet insertSetByisectisectByunionunionByminusminusByxunionxunionBymergemergeBysubsetsubsetBysortOnsortOn'nubSort nubSortBy nubSortOn nubSortOn'nubnubByghc-primGHC.BoolTrue GHC.Classes<=GHC.Base.