O#D     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. 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.org An 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.org  portablestablewren@community.haskell.org%&'()*+,-./0123! 456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"#$     !"#$%&'()*+,-./01234565789:;<;=>?@A@B@C@D;EFGHI@J@KLMN>O>PQR;STUV>WMX>YZ[\]M^M_`;ab>cdefghijfkflmn3o3p3q3r3s3t3u3v3w3x3y3z/{|}d~dddUUUUUUMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM>>>>>>>>>>>>>>>>>>>>>>>;;;;;ZZZZZZZZf@@@@@@55list-extras-0.2.0Data.List.Extras.ArgmaxData.List.Extras.PairData.List.Extras.LazyLengthbaseGHC.ListGHC.Base Data.MaybeData.List.ExtrasPrelude.Listless catchNullargmaxBy argmaxesByargmaxWithMaxByargmaxesWithMaxByargmaxargmaxes argmaxWithMaxargmaxesWithMaxargminargmins argminWithMinargminsWithMin zipWithByzipBy pairWithBypairWithpairBypairbijectbiject' lengthBound lengthCompare_argmaxWithMaxBy_argmaxesWithMaxByzipfoldrNothingzipWithlengthcompare>>===/=<=<GHC.ErrerrorGHC.Primseq System.IOprint Data.Tuplefstsnd otherwise&&||GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTonegatefail>>=>>returnBoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowBoolCharDoubleFloatIntIntegerOrderingRational GHC.IOBaseIO Data.EitherEitherStringFalseTrueLeftRightPrelude$!readIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar undefined GHC.ExceptioncatchFilePathIOError userErrorioErrorreadList readsPreclexreadreads readParenText.ParserCombinators.ReadPReadSacoshatanhasinhcoshtanhsinhacosatanasincostansinlogBase**logsqrtexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadix toRational toIntegerdivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionlcmgcd^^^oddeven realToFrac fromIntegralsignumabs*+subtractShowSshowListshow showsPrec showParen showStringshowCharshowseither Control.Monad=<<maxBoundminBoundfromEnumtoEnumpredsuccuncurrycurryJustMaybemaybeminmaxfmapLTEQGTasTypeOfuntil$flip.constidnot