f      !"#$%&'()*+,-./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"] %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"""/ Match an unsigned decimal numbermatch decimal "123"[123]match decimal "-123"[]09Transform a numeric parser to accept an optional leading '+' or '-' signmatch (signed decimal) "+123"[123]match (signed decimal) "-123"[-123]match (signed decimal) "123"[123]1Match a  , but return match (once (char '1')) "1"["1"]match (once (char '1')) ""[]2(Use this to match the prefix of a stringmatch "A" "ABC"[]match (prefix "A") "ABC"["A"]3(Use this to match the suffix of a stringmatch "C" "ABC"[]match (suffix "C") "ABC"["C"]4*Use this to match the interior of a stringmatch "B" "ABC"[]match (has "B") "ABC"["B"]52Parse 0 or more occurrences of the given charactermatch (star anyChar) "123"["123"]match (star anyChar) ""[""] See also: A62Parse 1 or more occurrences of the given charactermatch (plus anyChar) "123"["123"]match (plus anyChar) ""[] See also: B7}Patterns that match multiple times are greedy by default, meaning that they try to match as many times as possible. The 7> 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"]8CApply 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"[]9GApply 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 ',') ""[[]]@p @ sep$ matches one or more occurrences of p separated by sep$match (decimal `sepBy1` ",") "1,2,3" [[1,2,3]]match (decimal `sepBy1` ",") ""[]ALike star dot or  star anyChar, except more efficientBLike plus dot or  plus anyChar, except more efficient3 !"#$%&'()*+,-./0123456789:;<=>?@AB, !"#$%&'()*+,-./0123456789:;<=>?@AB, !"#$%&'()*+,-./0234156789:;<=>?@AB1 !"#$%&'()*+,-./0123456789:;<=>?@ABNone7CRun a command using execvp, retrieving the exit codeThe command inherits stdout and stderr for the current processD<Run a command line using the shell, retrieving the exit code#This command is more powerful than Cc, but highly vulnerable to code injection if you template the command line with untrusted inputThe command inherits stdout and stderr for the current processERun a command using execvp , streaming stdout as lines of The command inherits stderr for the current processF.Run a command line using the shell, streaming stdout as lines of #This command is more powerful than Ec, but highly vulnerable to code injection if you template the command line with untrusted inputThe command inherits stderr for the current processG Print to stdoutH Print to stderrIRead in a line from stdinReturns  if at end of inputJ%Set or modify an environment variableKDelete an environment variableLLook up an environment variableM"Retrieve all environment variablesNChange the current directoryOGet the current directoryPGet the home directoryQCanonicalize a pathR@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 slashS7Stream all recursive descendents of the given directoryTMove a file or directoryUCreate a directory!Fails if the directory is presentV'Create a directory tree (equivalent to mkdir -p))Does not fail if the directory is presentW Copy a fileX Remove a fileYRemove a directoryZ'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 value`Sleep for the given durationKA numeric literal argument is interpreted as seconds. In other words,  (sleep 2.0) will sleep for two seconds.aExit with the given exit codeAn exit code of 0 indicates successb&Throw an exception using the provided  messagec;Create a temporary directory underneath the given directory)Deletes the temporary directory when doned6Create a temporary file underneath the given directory$Deletes the temporary file when doneeFork a thread, acquiring an  valuefRead lines of  from standard inputgRead lines of  from a filehRead lines of  from a iStream lines of  to standard outputjStream lines of  to standard errorkStream lines of  to a filelStream lines of  to append to a filem Acquire a  read-only  from a n Acquire a  write-only  from a o Acquire a  append-only  from a pCombine the output of multiple  s, in orderq$Keep all lines that match the given rReplace 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 timess@Search a directory recursively for all files matching the given t A Stream of "y"suLimit a  to a fixed number of valuesvLimit a % to values that satisfy the predicateUThis terminates the stream on the first value that does not satisfy the predicatewGet the current timex%Get the time a file was last modified9CCommand ArgumentsLines of standard input Exit codeD Command lineLines of standard input Exit codeCommandLines of standard input Exit codeECommand ArgumentsLines of standard inputLines of standard outputF Command lineLines of standard inputLines of standard outputCommandLines of standard inputLines of standard outputGHIJKLMNOPQRSTUVWXYZ[\]^_`abcParent directoryDirectory name templatedParent directoryFile name templateefghijklmnopqrstuvwx7CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx7CDGHIJKLMNOPQTUVWXYZ[\]wx^_`abmnodceEFfghijklRSpqrstuv9CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx Safe-Inferred=KyA y stringzConcatenate two y strings{ Convert a yV string to a print function that takes zero or more typed arguments and returns a  string| Create your own format specifier}y any  able value format w True"True"~y an  value as a signed decimal format d 25"25"format d (-25)"-25"y a  value as an unsigned decimal format u 25"25"y a " value as an unsigned octal number format o 25"31"y a E value as an unsigned hexadecimal number (without a leading "0x") format x 25"19"y a 2 using decimal notation with 6 digits of precision format f 25.1 "25.100000"y a 5 using scientific notation with 6 digits of precision format e 25.1 "2.510000e1"y 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"y that inserts format s "ABC""ABC" Convert a able value to Short-hand for  (format w) repr (1,2)"(1,2)"y a  into yz{|}~yz{|}~yz{|}~yz{|}~None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   None      !" !#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  +        turtle-1.0.2TurtleTurtle.Prelude Turtle.ShellTurtle.Pattern Turtle.FormatFilesystem.Path CurrentOSTurtle.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.7 Control.FoldlFoldFoldMtransformers-0.3.0.0Control.Monad.IO.ClassliftIO time-1.4.2Data.Time.Clock.UTCUTCTimeNominalDiffTimeShellfoldIOfoldshviewselectusingPatternmatchanyChareofdotsatisfycharnotChartextoneOfnoneOfspacespacesspaces1tabnewlinecrlfupperloweralphaNumletterdigithexDigitoctDigitdecimalsignedonceprefixsuffixhasstarplusselflesschoicecountoptionbetweenskipwithinfixedsepBysepBy1charschars1procshellinprocinshellechoerrreadlineexportunsetneedenvcdpwdhomerealpathlslstreemvmkdirmktreecprmrmdirrmtreedutestfiletestdirtouchtimesleepexitdie mktempdirmktempforkstdininputinhandlestdoutstderroutputappendreadonly writeonly appendonlycatgrepsedfindyeslimit limitWhiledatedatefileFormat%format makeFormatwduoxfegsfprepr System.IOprint managed-1.0.0Control.Monad.ManagedManaged$fIsStringShell$fFloatingShell$fFractionalShell $fNumShell $fMonoidShell$fMonadIOShell$fMonadPlusShell$fAlternativeShell $fMonadShell$fApplicativeShell$fFunctorShellghc-prim GHC.TypesCharControl.Applicativeoptional runPattern$fIsStringPattern$fFloatingPattern$fFractionalPattern $fNumPattern$fMonoidPattern Data.MaybeNothingdeslashAsyncsystem-filepath-0.4.13.2Filesystem.Path.InternalFilePathsystemstreamGHC.ShowShowIntWordDouble>>-$fIsStringFormat$fCategory*Format Control.Monadguardjoin<*>pure Alternative MonadPlus ApplicativeliftA2<**>manysome<|>empty Data.Functor<$> Data.Monoid<>mconcatmappendmemptyMonoidmfilterunlesswhen replicateM_voidforever<=<>=>msummplusmzeroMonadIO runManagedmanagedFilesystem.Path.CurrentOSfromTexttoTextsplitExtension dropExtension<.> hasExtension extensionsplitDirectoriescollapse stripPrefix commonPrefixrelativeabsolutebasenamedirnamefilenameparent directoryroot