q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-InferredHMA  (Shell a) is a protected stream of a's with side effectsUse a   to reduce the stream of a's produced by a Run a , to completion, discarding any unused valuesRun a  to completion, ing any unused valuesConvert a list to a $ that emits each element of the list Acquire a  resource within a  in an exception-safe way   None=BK-,A fully backtracking pattern that parses an 'a' from some Match a  against a ( input, returning all possible solutionsThe  must match the entire Match any charactermatch anyChar "1""1"match anyChar """"Matches the end of input match eof "1"[] match eof ""[()] Synonym for 6Match any character that satisfies the given predicatematch (satisfy (== '1')) "1""1"match (satisfy (== '2')) "1"""Match a specific charactermatch (char '1') "1""1"match (char '2') "1"""(Match any character except the given onematch (notChar '2') "1""1"match (notChar '1') "1"""Match a specific stringmatch (text "123") "123"["123"]You can also omit the  function if you enable the OverloadedStrings extension:match "123" "123"["123"] 1Match a specific string in a case-insensitive wayThis only handles ASCII stringsmatch (asciiCI "abc") "ABC"["ABC"]!%Match any one of the given charactersmatch (oneOf "1a") "1""1"match (oneOf "2a") "1"""".Match anything other than the given charactersmatch (noneOf "2a") "1""1"match (noneOf "1a") "1"""#Match a whitespace charactermatch space " "" "match space "1"""$(Match zero or more whitespace charactersmatch spaces " "[" "]match spaces ""[""]%'Match one or more whitespace charactersmatch spaces1 " "[" "]match spaces1 ""[]&Match the tab character ('t')match tab "\t""\t" match tab " """'Match the newline character ('n')match newline "\n""\n"match newline " """(Matches a carriage return ('r') followed by a newline ('n')match crlf "\r\n"["\r\n"]match crlf "\n\r"[])Match an uppercase lettermatch upper "A""A"match upper "a"""*Match a lowercase lettermatch lower "a""a"match lower "A"""+Match a letter or digitmatch alphaNum "1""1"match alphaNum "a""a"match alphaNum "A""A"match alphaNum ".""",Match a lettermatch letter "A""A"match letter "a""a"match letter "1"""- Match a digitmatch digit "1""1"match digit "a""".Match a hexadecimal digitmatch hexDigit "1""1"match hexDigit "A""A"match hexDigit "a""a"match hexDigit "g"""/Match an octal digitmatch octDigit "1""1"match octDigit "9"""0 Match an unsigned decimal numbermatch decimal "123"[123]match decimal "-123"[]19Transform a numeric parser to accept an optional leading '+' or '-' signmatch (signed decimal) "+123"[123]match (signed decimal) "-123"[-123]match (signed decimal) "123"[123]2Match a  , but return match (once (char '1')) "1"["1"]match (once (char '1')) ""[]3(Use this to match the prefix of a stringmatch "A" "ABC"[]match (prefix "A") "ABC"["A"]4(Use this to match the suffix of a stringmatch "C" "ABC"[]match (suffix "C") "ABC"["C"]5*Use this to match the interior of a stringmatch "B" "ABC"[]match (has "B") "ABC"["B"]62Parse 0 or more occurrences of the given charactermatch (star anyChar) "123"["123"]match (star anyChar) ""[""] See also: B72Parse 1 or more occurrences of the given charactermatch (plus digit) "123"["123"]match (plus digit) ""[] See also: C8}Patterns that match multiple times are greedy by default, meaning that they try to match as many times as possible. The 8> combinator makes a pattern match as few times as possiblefThis only changes the order in which solutions are returned, by prioritizing less greedy solutions.match (prefix (selfless (some anyChar))) "123"["1","12","123"].match (prefix (some anyChar) ) "123"["123","12","1"]9CApply the patterns in the list in order, until one of them succeeds*match (choice ["cat", "dog", "egg"]) "egg"["egg"]*match (choice ["cat", "dog", "egg"]) "cat"["cat"]*match (choice ["cat", "dog", "egg"]) "fan"[]:GApply the given pattern a fixed number of times, collecting the resultsmatch (count 3 anyChar) "123"["123"]match (count 4 anyChar) "123"[];FTransform a parser to a succeed with an empty value instead of failing See also: match (option "1" <> "2") "12"["12"]match (option "1" <> "2") "2"["2"]<(between open close p) matches 'p' in between 'open' and 'close'<match (between (char '(') (char ')') (star anyChar)) "(123)"["123"];match (between (char '(') (char ')') (star anyChar)) "(123"[]=Discard the pattern's resultmatch (skip anyChar) "1"[()]match (skip anyChar) ""[]>KRestrict the pattern to consume no more than the given number of charactersmatch (within 2 decimal) "12"[12]match (within 2 decimal) "1"[1]match (within 2 decimal) "123"[]?ERequire the pattern to consume exactly the given number of charactersmatch (fixed 2 decimal) "12"[12]match (fixed 2 decimal) "1"[]@p @ sep% matches zero or more occurrences of p separated by sep(match (decimal `sepBy` char ',') "1,2,3" [[1,2,3]]#match (decimal `sepBy` char ',') ""[[]]Ap A sep$ matches one or more occurrences of p separated by sep$match (decimal `sepBy1` ",") "1,2,3" [[1,2,3]]match (decimal `sepBy1` ",") ""[]BLike star dot or  star anyChar, except more efficientCLike plus dot or  plus anyChar, except more efficient2 !"#$%&'()*+,-./0123456789:;<=>?@ABC- !"#$%&'()*+,-./0123456789:;<=>?@ABC- !"#$%&'()*+,-./0134526789:;<=>?@ABC0 !"#$%&'()*+,-./0123456789:;<=>?@ABCNone:DRun a command using execvp, retrieving the exit codeThe command inherits stdout and stderr for the current processE<Run a command line using the shell, retrieving the exit code#This command is more powerful than Dc, but highly vulnerable to code injection if you template the command line with untrusted inputThe command inherits stdout and stderr for the current processFRun a command using execvp , streaming stdout as lines of The command inherits stderr for the current processG.Run a command line using the shell, streaming stdout as lines of #This command is more powerful than Fc, but highly vulnerable to code injection if you template the command line with untrusted inputThe command inherits stderr for the current processH Print to stdoutI Print to stderrJRead in a line from stdinReturns  if at end of inputK%Set or modify an environment variableLDelete an environment variableMLook up an environment variableN"Retrieve all environment variablesOChange the current directoryPGet the current directoryQGet the home directoryRCanonicalize a pathS@Stream all immediate children of the given directory, excluding "." and ".."CThis is used to remove the trailing slash from a path, because getDirectoryPermissions/ will fail if a path ends with a trailing slashT7Stream all recursive descendents of the given directoryUMove a file or directoryVCreate a directory!Fails if the directory is presentW'Create a directory tree (equivalent to mkdir -p))Does not fail if the directory is presentX Copy a fileY Remove a fileZRemove a directory['Remove a directory tree (equivalent to rm -r)Use at your own risk\Get a file or directory's size]Check if a file exists^Check if a directory exists_LTouch a file, updating the access and modification times to the current time*Creates an empty file if it does not exist`:Time how long a command takes in monotonic wall clock time/Returns the duration alongside the return valueaSleep for the given durationKA numeric literal argument is interpreted as seconds. In other words,  (sleep 2.0) will sleep for two seconds.bExit with the given exit codeAn exit code of 0 indicates successc&Throw an exception using the provided  messaged Analogous to  in Bash6Runs the second command only if the first one returns e Analogous to  in Bash5Run the second command only if the first one returns f;Create a temporary directory underneath the given directory)Deletes the temporary directory when doneg6Create a temporary file underneath the given directory$Deletes the temporary file when donehFork a thread, acquiring an  valueiRead lines of  from standard inputjRead lines of  from a filekRead lines of  from a lStream lines of  to standard outputmStream lines of  to standard errornStream lines of  to a fileoStream lines of  to append to a filep$Read in a stream's contents strictlyq Acquire a  read-only  from a r Acquire a  write-only  from a s Acquire a  append-only  from a tCombine the output of multiple  s, in orderu$Keep all lines that match the given vReplace all occurrences of a  with its  resultWarning: Do not use a S that matches the empty string, since it will match an infinite number of timesw@Search a directory recursively for all files matching the given x A Stream of "y"syLimit a  to a fixed number of valueszLimit a % to values that satisfy the predicateUThis terminates the stream on the first value that does not satisfy the predicate{Get the current time|%Get the time a file was last modified<DCommand ArgumentsLines of standard input Exit codeE Command lineLines of standard input Exit codeCommandLines of standard input Exit codeFCommand ArgumentsLines of standard inputLines of standard outputG Command lineLines of standard inputLines of standard outputCommandLines of standard inputLines of standard outputHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefParent directoryDirectory name templategParent directoryFile name templatehijklmnopqrstuvwxyz{|:DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|:DEHIJKLMNOPQRUVWXYZ[\]^{|_`abcdeqrsgfhFGijklmnopSTtuvwxyz<DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|de Safe-Inferred=K}A } string~Concatenate two } strings Convert a }V string to a print function that takes zero or more typed arguments and returns a  string Create your own format specifier} any  able value format w True"True"} an  value as a signed decimal format d 25"25"format d (-25)"-25"} a  value as an unsigned decimal format u 25"25"} a " value as an unsigned octal number format o 25"31"} a E value as an unsigned hexadecimal number (without a leading "0x") format x 25"19"} a 2 using decimal notation with 6 digits of precision format f 25.1 "25.100000"} a 5 using scientific notation with 6 digits of precision format e 25.1 "2.510000e1"} a [ using decimal notation for small exponents and scientific notation for large exponents format g 25.1 "25.100000"format g 123456789 "1.234568e8"format g 0.00000000001"1.000000e-11"} that inserts format s "ABC""ABC"} a  into 'import Filesystem.Path.CurrentOS((</>))format fp ("usr" </> "lib") "usr/lib" Convert a able value to Short-hand for  (format w) repr (1,2)"(1,2)"}~}~}~}~None is a reverse application operator. This provides notational convenience. Its precedence is one higher than that of the forward application operator , which allows  to be nested in .  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   None     !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~)  turtle-1.1.0TurtleTurtle.Prelude Turtle.ShellTurtle.Pattern Turtle.FormatTurtle.Tutorialbase Data.String fromStringIsStringGHC.IO.Handle.TypesHandle async-2.0.2Control.Concurrent.AsyncwaitGHC.IO.Exception ExitSuccess ExitFailureExitCode text-1.2.0.4Data.Text.InternalText foldl-1.0.9 Control.FoldlFoldFoldMtransformers-0.3.0.0Control.Monad.IO.ClassliftIO time-1.4.2Data.Time.Clock.UTCUTCTimeNominalDiffTimeShellfoldIOfoldshviewselectusingPatternmatchanyChareofdotsatisfycharnotChartextasciiCIoneOfnoneOfspacespacesspaces1tabnewlinecrlfupperloweralphaNumletterdigithexDigitoctDigitdecimalsignedonceprefixsuffixhasstarplusselflesschoicecountoptionbetweenskipwithinfixedsepBysepBy1charschars1procshellinprocinshellechoerrreadlineexportunsetneedenvcdpwdhomerealpathlslstreemvmkdirmktreecprmrmdirrmtreedutestfiletestdirtouchtimesleepexitdie.&&..||. mktempdirmktempforkstdininputinhandlestdoutstderroutputappendstrictreadonly writeonly appendonlycatgrepsedfindyeslimit limitWhiledatedatefileFormat%format makeFormatwduoxfegsfprepr& System.IOprint managed-1.0.0Control.Monad.ManagedManaged$fIsStringShell $fNumShell $fMonoidShell$fMonadIOShell$fMonadPlusShell$fAlternativeShell $fMonadShell$fApplicativeShell$fFunctorShellghc-prim GHC.TypesCharControl.Applicativeoptional runPattern$fIsStringPattern $fNumPattern$fMonoidPattern Data.MaybeNothingdeslash GHC.Classes&&||Asyncsystem-filepath-0.4.13.2Filesystem.Path.InternalFilePathsystemstreamGHC.ShowShowIntWordDouble>>-$fIsStringFormat$fCategory*FormatGHC.Base$ Control.Monadguardjoin<*>pure Alternative MonadPlus ApplicativeliftA2<**>manysome<|>empty Data.Functor<$> Data.Monoid<>mconcatmappendmemptyMonoidmfilterunlesswhen replicateM_voidforever<=<>=>msummplusmzeroMonadIO runManagedmanagedFilesystem.Path.CurrentOSfromTexttoTextFilesystem.PathsplitExtension dropExtension<.> hasExtension extensionsplitDirectoriescollapse stripPrefix commonPrefixrelativeabsolutebasenamedirnamefilenameparent directoryroot