úÎNã+      !"#$%&'()*portable in-progress&http://community.haskell.org/~ndm/safe/+,-.  tailDef [12] [] = [12]  tailDef [12] [1,3,4] = [3,4]   tailMay [] = Nothing  tailMay [1,3,4] = Just [3,4]  E tail "help me" [] = error "Pattern match failure, tail [], help me"  tail "help me" [1,3,4] = [3,4]   tailSafe [] = []  tailSafe [1,3,4] = [3,4]  See fromMaybe Same as (!!), but better error message  !"#$ ( lookupJust key = fromJust . lookup key %&' " findJust op = fromJust . find op ()*Exactly the same as error+. Use this for instances where the program J has decided to exit because of invalid user input, or the user pressed  quit etc. This allows error- to be reserved for genuine coding mistakes. +  !"#$%&'()*+  !"#$%&'()*+  !"#$%&'()*/      !"#$%&'()*+,-./01 safe-0.3.1SafetailDeftailMaytailNotetailSafeinitDefinitMayinitNoteinitSafeheadDefheadMayheadNotelastDeflastMaylastNote minimumDef minimumMay minimumNote maximumDef maximumMay maximumNote foldr1Def foldr1May foldr1Note foldl1Def foldl1May foldl1Note fromJustDef fromJustNote assertNoteatatDefatMayatNotereadDefreadMayreadNote lookupJust lookupJustDeflookupJustNotefindJust findJustDef findJustNoteabortliftDefliftMayliftNoteliftSafe