^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~   Safe-Inferred Safe-Inferred-Show a number to a number of decimal places.  showDP 4 pi == "3.1416"  showDP 0 pi == "3"  showDP 2 3 == "3.00"  Specialised numeric conversion.  Specialised numeric conversion.  Specialised numeric conversion.  Specialised numeric conversion.     NoneJShow a number of seconds, typically a duration, in a suitable manner with % responable precision for a human. ! showDuration 3.435 == "3.44s" " showDuration 623.8 == "10m24s" " showDuration 62003.8 == "17h13m" % showDuration 1e8 == "27777h47m" DCall once at the start, then call repeatedly to get Time values out QLike offsetTime, but results will never decrease (though they may stay the same)      Safe-Inferred&Update the first component of a pair. 'Update the second component of a pair. (Update the first component of a triple. )Update the second component of a triple. (Update the third component of a triple.  ! ! ! ! Safe-Inferred "@Apply some operation repeatedly, producing an element of output " and the remainder of the list. 4 \xs -> repeatedly (splitAt 3) xs == chunksOf 3 xs / \xs -> repeatedly word1 (trim xs) == words xs #Flipped version of .  for [1,2,3] (+1) == [2,3,4] $4Are two lists disjoint, with no elements in common.  disjoint [1,2,3] [4,5] == True ! disjoint [1,2,3] [4,1] == False %2Is there any element which occurs more than once.  anySame [1,1,2] == True  anySame [1,2,3] == False &Are all elements the same.  allSame [1,1,2] == False  allSame [1,1,1] == True  allSame [1] == True  allSame [] == True 4Documentation about lowercase , lower "This is A TEST" == "this is a test"  lower "" == "" FFind the first instance of needle in haystack. ) The first element of the returned tuple  is the prefix of haystack before needle is matched. The second  is the remainder of haystack, starting with the match.  Examples:  + breakOn "::" "a::b::c" == ("a", "::b::c") * breakOn "/" "foobar" == ("foobar", "") Laws: a \needle haystack -> let (prefix,match) = breakOn needle haystack in prefix ++ match == haystack G Similar to F#, but searches from the end of the  string. 9The first element of the returned tuple is the prefix of haystack ' up to and including the last match of needle. The second is the  remainder of haystack, following the match. . breakOnEnd "::" "a::b::c" == ("a::b::", "c") H0Break a list into pieces separated by the first ? list argument, consuming the delimiter. An empty delimiter is 0 invalid, and will cause an error to be raised.  Examples:  8 splitOn "\r\n" "a\r\nb\r\nd\r\ne" == ["a","b","d","e"] : splitOn "aaa" "aaaXaaaXaaaXaaa" == ["","X","X","X",""] . splitOn "x" "x" == ["",""] + splitOn "x" "" == [""] and 6 \s x -> s /= "" ==> intercalate s (splitOn s x) == x B \c x -> splitOn [c] x == split (==c) x I7Splits a list into components delimited by separators, @ where the predicate returns True for a separator element. The C resulting components do not contain the separators. Two adjacent = separators result in an empty component in the output. eg. 0 split (=='a') "aabbaca" == ["","","bb","c",""] ! split (=='a') "" == [""] J A version of + but with different strictness properties. D Often outperforms if the list is short or the test is expensive. K5Return the prefix of the second string if its suffix " matches the entire first string.  Examples: * stripSuffix "bar" "foobar" == Just "foo" * stripSuffix "" "baz" == Just "baz" ' stripSuffix "foo" "quux" == Nothing LESplit a list into chunks of a given size. The last chunk may contain ; fewer than n elements. The chunk size must be positive. + chunksOf 3 "my test" == ["my ","tes","t"] ' chunksOf 3 "mytest" == ["myt","est"]  chunksOf 8 "" == []  chunksOf 0 "test" == error +"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL      !"#$%&'"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL,4531267E'()*+;<:98"#$&%-,@AJ0K./=>?BCDFGHIL+"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL Safe-InferredM#Evaluates the value before calling ( N#Evaluates the value before calling  MN )*+(,-.MNMNMN Safe-InferredOThe O( function extracts the element out of a / and & throws an error if its argument is 0.  Much like fromJust>, using this function in polished code is usually a bad idea. PThe P( function extracts the element out of a 0 and & throws an error if its argument is /.  Much like fromJust>, using this function in polished code is usually a bad idea. SPull the value out of an 1 where both alternatives  have the same type. OPQRS 1/02345OPQRSQROPSOPQRS  Safe-InferredTPerform some operation on 6, given the field inside the 6. & whenJust Nothing print == return () $ whenJust (Just 1) print == print 1 U>The identity function which requires the inner argument to be '()'. Useful for functions ! with overloaded return times. ! \(x :: Maybe ()) -> unit x == x V A version of  partition& that works with a monadic predicate. 7 partitionM (Just . even) [1,2,3] == Just ([2], [1,3]) / partitionM (const Nothing) [1,2,3] == Nothing W A version of & that works with a monadic predicate. X A version of 7& that works with a monadic predicate. Y1A looping operation, where the predicate returns / as a seed for the next loop  or 0 to abort the loop. Z+Keep running an operation until it becomes 8. TUVWXYZ[\]^_`abcdef<9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aTUVWXYZ[\]^_`abcdefTUVWXYZ[\]^_`cdabefTUVWXYZ[\]^_`abcdef  Safe-InferredgSRemember that the current directory is a global variable, so calling this function S multithreaded is almost certain to go wrong. Avoid changing the dir if you can. h>Find all the files within a directory, including recursively. = Looks through all folders, including those beginning with .. iOCreate a directory with permissions so that only the current user can view it. - On Windows this function is equivalent to b. ghi&cdefghijklmnopqrstuvwbxyz{|}~ghighighi  Safe-Inferred j[Fully evaluate an input String. If the String contains embedded exceptions it will produce < Exception>. N stringException ("test" ++ undefined) == return "test<Exception>" N stringException ("test" ++ undefined ++ "hello") == return "test<Exception>" C stringException "test" == return "test" k=Show a value, but if the result contains exceptions, produce  < Exception> . Defined as j . show. U Particularly useful for printing exceptions to users, remembering that exceptions , can themselves contain undefined values. l,Ignore any exceptions thrown by the action.  ignore (print 1) == print 1 " ignore (fail "die") == return () m9Retry an operation at most N times (N must be positive). # retry 1 (print "x") == print "x" $ retry 3 (fail "die") == fail "die" n A version of  without the  context, restricted to ,  so catches all exceptions. oLike n but for  pLike n but for  qLike n but for  rLike n but for  sLike n but for  t_Catch an exception if the predicate passes, then call the handler with the original exception.  As an example: \> readFileExists x == catchBool isDoesNotExistError (readFile "myfile") (const $ return "") uLike t but for . vLike t but for . jklmnopqrstuv\jklmnopqrstuv mkjlnproqstuvjklmnopqrstuv Nonewxwxwxwx None Capture the  and  of a computation. . captureOutput (print 1) == return ("1\n",()) yz{|}~z      !"#$%&'()*+,-./0123456789:;<=>?@ABCyz{|}~yz{|}~yz{|}~None%DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde Safe-Inferred.Starts out empty, then is filled exactly once &Like an MVar, but must always be full Like an MVar, but has no value On GHC 7.6 and above with the  -threaded flag, brackets a call to . ! On lower versions (which lack /) this function just runs the argument action. fghRijklmnopqrstuvwxyz{|}~fghNone  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mkjlnproqstuvTUVWXYZ[\]^_`cdabefQROPSMN4531267E'()*+;<:98"#$&%-,@AJ0K./=>?BCDFGHIL ! ghiwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJFKFLFMNONPNQNRNSNTNUVWVXYZ[\]^_`abacdeafagahaiajakalamanaoapaqarasatauavawaxayaza{a|a}a~aaaaaaa  YZ      !"#$%&'()*+,-./012345464748494:4;4<4=4>4?4@ABACADAEAFAGAHAIAJAKALMNOPQRSTUVWXYZ[[\]^_^`^a^bcdcecfcgchijkljkmjknjkojkpjkqjkrjksjktjkujkvjkwjkxjkyjkzjk{j|}j|~j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j| extra-0.3System.Environment.ExtraControl.Concurrent.ExtraData.IORef.ExtraData.List.Extra Numeric.ExtraSystem.Time.ExtraData.Tuple.ExtraData.Either.ExtraControl.Monad.ExtraSystem.Directory.ExtraControl.Exception.ExtraSystem.Info.ExtraSystem.IO.ExtraSystem.Process.ExtraExtrabaseSystem.Environment lookupEnv!System.Environment.ExecutablePathgetExecutablePathControl.Concurrent forkFinally GHC.Conc.SyncsetNumCapabilities Data.IORefatomicWriteIORefatomicModifyIORef' modifyIORef' Data.List dropWhileEndshowDP intToDouble intToFloat floatToDouble doubleToFloatSecondssleep subtractTime showDuration offsetTimeoffsetTimeIncreasedurationfirstsecond***&&&dupebothfst3snd3thd3first3second3third3dupe3both3 repeatedlyfordisjointanySameallSamelistunconsunsnocconssnoctakeEnddropEnd concatUnzip concatUnzip3 takeWhileEnd trimStarttrimEndtrimlowerupper dropAroundword1sortOngroupOnnubOn groupSort groupSortOnmergemergeByreplacebreakEndspanEndwordsBylinesBy firstJustdrop1breakOn breakOnEndsplitOnsplit dropWhileEnd' stripSuffixchunksOf writeIORef'atomicWriteIORef'fromLeft fromRightisLeftisRight fromEitherwhenJustunit partitionM concatMapM mapMaybeMloopMwhileMwhenMunlessMifMnotM||^&&^anyMallMorMandMfindM firstJustMwithCurrentDirectorygetDirectoryContentsRecursivecreateDirectoryPrivatestringException showExceptionignoreretrycatch_ catchJust_handle_ handleJust_try_tryJust_ catchBool handleBooltryBool isWindowsgetProcessorCountreadFileEncoding readFileUTF8readFileBinary readFile'readFileEncoding' readFileUTF8'readFileBinary'writeFileEncoding writeFileUTF8writeFileBinary captureOutput withBuffering newTempFile withTempFile newTempDir withTempDir systemOutputsystem_ systemOutput_BarrierVarLockwithNumCapabilitiesnewLockwithLock withLockTrynewVarreadVar modifyVar modifyVar_withVar newBarrier signalBarrier waitBarrierwaitBarrierMaybegetEnvironment withProgNamewithArgsgetEnv getProgNamegetArgsNumericshowOctshowHex showIntAtBase showGFloat showFFloat showEFloatshowInt readSigned readFloatreadHexreadDecreadOctreadIntGHC.Read lexDigits GHC.FloatfromRat floatToDigits showFloatGHC.Real showSigned Data.TuplefstsndswapuncurrycurryGHC.Basemap++foldrGHC.Listconcatfilterzipunwordswordsunlineslinesproductsumfoldl1'foldl1foldl'unfoldrsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLength minimumBy maximumByminimummaximuminsertByinsert mapAccumR mapAccumL partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndexfind elemIndices elemIndex stripPrefixunzip3unzipzipWith3zipWithzip3!! concatMaplookupnotElemelemallanyorandreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrfoldr1scanl1scanlfoldllengthnullinitlasttailhead GHC.IORef writeIORefatomicModifyIORef modifyIORef mkWeakIORef readIORefnewIORefIORef Data.EitherLeftRightEitherpartitionEithersrightsleftseither Data.MaybeJustmapMaybeghc-prim GHC.TypesFalsefail>>=>>fmapreturn Control.MonadguardliftMMonadFunctor MonadPlusmfilterapliftM5liftM4liftM3liftM2unlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinvoidforever<=<>=>msumforM_forMfilterMmapM_mapM sequence_sequence=<<mplusmzerodirectory-1.2.0.1System.DirectorycreateDirectorygetTemporaryDirectorygetUserDocumentsDirectorygetAppUserDataDirectorygetHomeDirectorygetModificationTime doesFileExistdoesDirectoryExistsetCurrentDirectorygetCurrentDirectorygetDirectoryContentsfindFilefindExecutablemakeRelativeToCurrentDirectorycanonicalizePathcopyFile renameFilerenameDirectory removeFileremoveDirectoryRecursiveremoveDirectorycreateDirectoryIfMissingcopyPermissionssetPermissionsgetPermissionssetOwnerSearchablesetOwnerExecutablesetOwnerWritablesetOwnerReadableemptyPermissions searchable executablewritablereadable PermissionsControl.Exception.Basecatch GHC.Exception Exception SomeException catchJusthandle handleJusttrytryJustboolassertControl.ExceptionallowInterruptcatchesHandlerbracketOnErrorbracket_finallybracket onException mapExceptionPatternMatchFail RecSelError RecConError RecUpdError NoMethodErrorNonTerminationNestedAtomicallythrowToGHC.IO.ExceptionioErrorBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAssertionFailed StackOverflow HeapOverflow ThreadKilled UserInterruptAsyncExceptionIndexOutOfBoundsUndefinedElementArrayExceptionGHC.IOevaluateuninterruptibleMaskuninterruptibleMask_maskmask_blockedgetMaskingStateunblockblockthrowIOUnmaskedMaskedInterruptibleMaskedUninterruptible MaskingState IOExceptionthrow fromException toException ErrorCallOverflow UnderflowLossOfPrecision DivideByZeroDenormalRatioZeroDenominatorArithExceptiongetNumberOfProcessors System.Info compilerNamearchoscompilerVersionGHC.IO.Handle.FDstdoutstderr System.IOprintIOgetLineGHC.IO.Handle.TypesHandle(openBinaryTempFileWithDefaultPermissions"openTempFileWithDefaultPermissionsopenBinaryTempFile openTempFilefixIOwithBinaryFilewithFilehPrinthReadylocaleEncodingreadIOreadLn appendFile writeFilereadFileinteract getContentsgetCharputStrLnputStrputCharopenBinaryFileopenFileisEOFstdin GHC.IO.HandlehShowhSetNewlineModehSetBinaryModehIsTerminalDevicehGetEchohSetEcho hIsSeekable hGetBuffering hIsWritable hIsReadable hIsClosedhIsOpenhTellhSeekhSetPosnhGetPosn hGetEncoding hSetEncoding hSetBuffering hLookAheadhIsEOF hSetFileSize hFileSizehClose HandlePosnGHC.IO.Handle.TexthGetBufNonBlocking hGetBufSomehGetBufhPutBufNonBlockinghPutBuf hPutStrLnhPutStrhPutChar hGetContentshGetLinehGetChar hWaitForInputGHC.IO.EncodingmkTextEncodingchar8utf32beutf32leutf32utf16beutf16leutf16utf8_bomutf8latin1hFlushnoNewlineTranslationnativeNewlineModeuniversalNewlineMode nativeNewline NoBuffering LineBufferingBlockBuffering BufferModeLFCRLFNewlineoutputNLinputNL NewlineModeGHC.IO.Encoding.Types TextEncoding GHC.IO.Device AbsoluteSeek RelativeSeek SeekFromEndSeekMode GHC.IO.IOModeReadMode WriteMode AppendMode ReadWriteModeIOModeFilePathprocess-1.1.0.2System.ProcessgetProcessExitCodeinterruptProcessGroupOfterminateProcessshowCommandForUser rawSystemsystemreadProcessWithExitCode readProcesswaitForProcessrunInteractiveProcessrunInteractiveCommand createProcessshellproc runProcess runCommandSystem.Process.Internals ProcessHandle create_group close_fdsstd_errstd_outstd_inenvcwdcmdspec CreateProcess ShellCommand RawCommandCmdSpecInherit UseHandle CreatePipe StdStreamthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOSnmergeIOmergeIOrtsSupportsBoundThreadsControl.Concurrent.SampleVarisEmptySampleVarwriteSampleVar readSampleVaremptySampleVar newSampleVarnewEmptySampleVar SampleVarControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.ChanwriteList2ChangetChanContents isEmptyChan unGetChandupChanreadChan writeChannewChanChan GHC.Conc.IO threadDelayControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarswapMVarreadMVarmkWeakThreadIdthreadCapabilityyield myThreadId killThreadgetNumCapabilitiesforkOnWithUnmaskforkOnforkIOWithUnmaskforkIOUnmaskedforkIOThreadIdGHC.MVar isEmptyMVar tryPutMVar tryTakeMVarputMVartakeMVarnewMVar newEmptyMVarMVar