XM      !"#$%&'()*+,-./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.  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). 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.3.0Prelude.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