6S.O      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe+F vA constraint synonym which denotes that the function is partial, and will (on GHC 8.* and up) produce a stack trace on failure. You may mark your own non-total functions as Partial, if necessary, and this will ensure that they produce useful stack traces.Safe+< Safe+<   findJust op = fromJust . find op   Safe+< mtakeExact n xs = | n >= 0 && n <= length xs = take n xs | otherwise = error "some message" mdropExact n xs = | n >= 0 && n <= length xs = drop n xs | otherwise = error "some message" ssplitAtExact n xs = | n >= 0 && n <= length xs = splitAt n xs | otherwise = error "some message"% izipExact xs ys = | length xs == length ys = zip xs ys | otherwise = error "some message"& uzipWithExact f xs ys = | length xs == length ys = zipWith f xs ys | otherwise = error "some message"- zip3Exact xs ys zs = | length xs == length ys && length xs == length zs = zip3 xs ys zs | otherwise = error "some message". zipWith3Exact f xs ys zs = | length xs == length ys && length xs == length zs = zipWith3 f xs ys zs | otherwise = error "some message" !"#$%&'()*+,-./01234%&-. !#"$(')+*,0/1324Safe+<+ 5 Synonym for . Used for instances where the program has decided to exit because of invalid user input, or the user pressed quit etc. This function allows & to be reserved for programmer errors.6 1tailMay [] = Nothing tailMay [1,3,4] = Just [3,4]7 3tailDef [12] [] = [12] tailDef [12] [1,3,4] = [3,4]8 \tailNote "help me" [] = error "Safe.tailNote [], help me" tailNote "help me" [1,3,4] = [3,4]9 )tailSafe [] = [] tailSafe [1,3,4] = [3,4]bAn alternative name for ?, to fit the naming scheme of this package. Generally using + directly would be considered better style.e Synonym for 5, but includes more information in the error message.i9This function provides a more precise error message than  readEither from base.ll uses i for the error message.m &lookupJust key = fromJust . lookup keyp  findJust op = fromJust . find ops *elemIndexJust op = fromJust . elemIndex opv *findIndexJust op = fromJust . findIndex opS56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~S5empsv6789:;<=>@B?ACDFHEGIJLNKMOPSVQTWRUXZ\^Y[]_`abcdfghjklinoqrtuwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI J  K  LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"safe-0.3.16-2SOPCzExIdX5OY4oPyN9n2 Safe.Partial Safe.Foldable Safe.ExactSafe Safe.UtilPartial foldl1May foldr1May foldl1Note foldr1Note foldl1Def foldr1Def minimumMay maximumMay minimumDef maximumDef minimumNote maximumNote minimumByMay maximumByMay minimumByDef maximumByDef minimumByNote maximumByNotefindJust findJustDef findJustNote foldl1Safe foldr1Safe findJustSafe takeExact dropExact splitAtExact takeExactNote takeExactMay takeExactDef dropExactNote dropExactMay dropExactDefsplitAtExactNotesplitAtExactMaysplitAtExactDefzipExact zipWithExact zipExactNote zipExactMay zipExactDefzipWithExactNotezipWithExactMayzipWithExactDef zip3Exact zipWith3Exact zip3ExactNote zip3ExactMay zip3ExactDefzipWith3ExactNotezipWith3ExactMayzipWith3ExactDefaborttailMaytailDeftailNotetailSafeinitMayinitDefinitNoteinitSafeheadMaylastMayheadDeflastDefheadNotelastNote foldl1May' foldl1Def' foldl1Note' scanr1May scanl1May scanr1Def scanl1Def scanr1Note scanl1NotecycleMaycycleDef cycleNote fromJustDef fromJustNote assertNoteatatMayatDefatNotereadEitherSafereadMayreadDefreadNote lookupJust lookupJustDeflookupJustNote elemIndexJustelemIndexJustDefelemIndexJustNote findIndexJustfindIndexJustDeffindIndexJustNote toEnumMay toEnumDef toEnumNote toEnumSafesuccMaysuccDefsuccNotesuccSafepredMaypredDefpredNotepredSafeindexMayindexDef indexNote.^.^^.^^^liftMayfromNoteModulefromNoteEitherModule eitherToMaybebaseGHC.Errerror Data.Maybe fromMaybeGHC.List!!