\QB      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~portable experimentalwren@community.haskell.org?Apply a list function safely, i.e. when the list is non-empty. > All other functions will throw errors on empty lists, so use ( this to make your own safe variations. 'Minimize the number of string literals 2Apply a list function unsafely. For internal use. Tail-recursive driver 'Tail-recursive driver for all-variants ;Return an element of the list which maximizes the function ' according to a user-defined ordering. <Return all elements of the list which maximize the function ' according to a user-defined ordering. ;Return an element of the list which maximizes the function ? according to a user-defined ordering, and return the value of ' the function at that element as well. <Return all elements of the list which maximize the function ? according to a user-defined ordering, and return the value of ) the function at those elements as well. <Return an element of the list which maximizes the function. =Return all elements of the list which maximize the function. <Return an element of the list which maximizes the function, ? and return the value of the function at that element as well. =Return all elements of the list which maximize the function, A and return the value of the function at those elements as well. <Return an element of the list which minimizes the function. =Return all elements of the list which minimize the function. <Return an element of the list which minimizes the function, ? and return the value of the function at that element as well. =Return all elements of the list which minimize the function, A and return the value of the function at those elements as well. portablestablewren@community.haskell.orgAn unsafe variant of  to fill out the interface.  A version of - that uses a user-defined list homomorphism. A generic version of  . The first argument is a tuple B homomorphism (i.e. a function for how to combine values from the ? two lists), the second two arguments form a list homomorphism  (i.e. so you can  the [c] list directly without actually  constructing it). In order to evaluate to WHNF  is strict in both list B arguments, as it must be, to determine that the lists are of the D same length. This means it can survive one infinite list (yielding  ) but that it can'%t survive two. The implementation is > very efficient and uses a tight tail-recursive loop, however @ with extremely long lists it will be churning through heap and B that tightness can make it hard to interrupt (lists of 1 million B elements return in 1~2 seconds, but lists of 10 million can lock  your system up). A safe version of . A safe version of - that uses a user-defined list homomorphism. A safe version of . =A bijection from a list of functions and a list of arguments = to a list of results of applying the functions bijectively.  A version of ' that applies functions strictly. N.B. C the list is still lazily evaluated, this just makes the functions  strict in their argument. portablestablewren@community.haskell.org A variant of % which is least-strict for comparing ? against a boundary length. This function is defined primarily ? for use by rewrite rules rather than for direct use (though it's  fine for that too).  lengthBound, is polymorphic in the return of the helper  function so we can use  as well as , ,  ,  , , /. If you want to use any other functions, know / that we only preserve the ordering of the list's length vs the A boundary length and so the function should not rely on the true 1 values of either of the numbers being compared.  A variant of % which is least-strict for comparing B the lengths of two lists. This is as strict as the length of the A shorter list (which allows comparing an infinite list against a ; finite list). The function itself is trivial, but again it's ' designed primarily for rewrite rules. If you'+re going to immediately follow this with a  function  then see Data.List.Extras.Pair instead. portablestablewren@community.haskell.orgportablestablewren@community.haskell.org  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~2#./$%,01  &YXWVUTSRQPONMLKJIHyx+'(wvutsrq)*GFp gfedcba`_^]\[Z!~}|{z"-kj5?Cmoi;9:8@hDl>=<A734EBn6   !"#$%&'()*+,-./012(3456 78 9: 9; 9< 9=>?@ ABC 9DEFG 7H 7IEJEKLM N O P Q R S T U V W X YZ[\]^_^`Ea0b0c0d0e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((\\55555555 A A Alist-extras-0.2.2Prelude.ListlessData.List.Extras.ArgmaxData.List.Extras.PairData.List.Extras.LazyLengthData.List.ExtrasbaseGHC.Errerrorghc-primGHC.Primseq System.IOprint Data.TuplefstsndGHC.Base otherwiseGHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negatefail>>=>>returnBoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowGHC.BoolBool GHC.TypesCharDoubleFloatInt integer-gmpGHC.Integer.TypeInteger GHC.OrderingOrderingRationalIO Data.EitherEitherStringFalseTrueLeftRightPrelude$!readIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharSystem.IO.ErrorcatchGHC.IO.ExceptionioError Text.Readreadreadseitherlex readParenreadList readsPrecacoshatanhasinhcoshtanhsinhacosatanasincostansinlogBase**logsqrtexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixlcmgcd^^^oddeven realToFrac fromIntegral toRational toIntegerdivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFraction undefinedText.ParserCombinators.ReadPReadSGHC.IOFilePathIOError userError Control.Monad=<<subtractsignumabs*+ showParen showStringshowCharshowsShowSshowListshow showsPrec Data.MaybemaybeNothingJustMaybemaxBoundminBoundfromEnumtoEnumpredsuccasTypeOfuntil$flip.constidfmapuncurrycurrynot||&&/=minmax<=><compareGTEQLT catchNullargmaxBy argmaxesByargmaxWithMaxByargmaxesWithMaxByargmaxargmaxes argmaxWithMaxargmaxesWithMaxargminargmins argminWithMinargminsWithMin zipWithByzipBy pairWithBypairWithpairBypairbijectbiject' lengthBound lengthCompareemptyListError throwNull_argmaxWithMaxBy_argmaxesWithMaxBy _argmaxBy _argmaxesByboolGHC.ListzipfoldrzipWithlength