҅      !"#$%&'()*+,-./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) ""[""]62Parse 1 or more occurrences of the given charactermatch (plus anyChar) "123"["123"]match (plus anyChar) ""[]7}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` ",") ""[]1 !"#$%&'()*+,-./0123456789:;<=>?@* !"#$%&'()*+,-./0123456789:;<=>?@* !"#$%&'()*+,-./0234156789:;<=>?@/ !"#$%&'()*+,-./0123456789:;<=>?@None6ARun a command using execvp, retrieving the exit codeThe command inherits stdout and stderr for the current processB<Run a command line using the shell, retrieving the exit code#This command is more powerful than Ac, but highly vulnerable to code injection if you template the command line with untrusted inputThe command inherits stdout and stderr for the current processCRun a command using execvp , streaming stdout as lines of The command inherits stderr for the current processD.Run a command line using the shell, streaming stdout as lines of #This command is more powerful than Cc, but highly vulnerable to code injection if you template the command line with untrusted inputThe command inherits stderr for the current processE Print to stdoutF Print to stderrGRead in a line from stdinReturns  if at end of inputH%Set or modify an environment variableIDelete an environment variableJLook up an environment variableK"Retrieve all environment variablesLChange the current directoryMGet the current directoryNGet the home directoryOCanonicalize a pathP@Stream all immediate children of the given directory, excluding "." and ".."Q7Stream all recursive descendents of the given directoryRMove a file or directorySCreate a directory!Fails if the directory is presentT'Create a directory tree (equivalent to mkdir -p))Does not fail if the directory is presentU Copy a fileV Remove a fileWRemove a directoryX'Remove a directory tree (equivalent to rm -r)Use at your own riskYGet a file or directory's sizeZCheck 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._Exit with the given exit codeAn exit code of 0 indicates success`&Throw an exception using the provided  messagea;Create a temporary directory underneath the given directory)Deletes the temporary directory when doneb6Create a temporary file underneath the given directory$Deletes the temporary file when donecFork a thread, acquiring an  valuedRead lines of  from standard inputeRead lines of  from a filefRead lines of  from a gStream lines of  to standard outputhStream lines of  to standard erroriStream lines of  to a filejStream lines of  to append to a filek Acquire a  read-only  from a l Acquire a  write-only  from a m Acquire a  append-only  from a nCombine the output of multiple  s, in ordero$Keep all lines that match the given pReplace 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 timesq@Search a directory recursively for all files matching the given r A Stream of "y"ssLimit a  to a fixed number of valuestLimit a % to values that satisfy the predicateUThis terminates the stream on the first value that does not satisfy the predicateuGet the current timev%Get the time a file was last modified8ACommand ArgumentsLines of standard input Exit codeB Command lineLines of standard input Exit codeCommandLines of standard input Exit codeCCommand ArgumentsLines of standard inputLines of standard outputD Command lineLines of standard inputLines of standard outputCommandLines of standard inputLines of standard outputEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aParent directoryDirectory name templatebParent directoryFile name templatecdefghijklmnopqrstuv7ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv7ABEFGHIJKLMNORSTUVWXYZ[uv\]^_`klmbacCDdefghijPQnopqrst8ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv Safe-Inferred=KwA w stringxConcatenate two w stringsy Convert a wV string to a print function that takes zero or more typed arguments and returns a  stringz Create your own format specifier{w any  able value format w True"True"|w an  value as a signed decimal format d 25"25"format d (-25)"-25"}w a  value as an unsigned decimal format u 25"25"~w a " value as an unsigned octal number format o 25"31"w a E value as an unsigned hexadecimal number (without a leading "0x") format x 25"19"w a 2 using decimal notation with 6 digits of precision format f 25.1 "25.100000"w a 5 using scientific notation with 6 digits of precision format e 25.1 "2.510000e1"w 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"w that inserts format s "ABC""ABC" Convert a able value to Short-hand for  (format w) repr (1,2)"(1,2)"wxyz{|}~wxyz{|}~wxyz{|}~wxyz{|}~None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   None     !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~)  turtle-1.0.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.7 Control.FoldlFoldFoldMtransformers-0.3.0.0Control.Monad.IO.ClassliftIO time-1.4.2Data.Time.Clock.UTCUTCTimeNominalDiffTimeShellfoldIOfoldshviewselectusingPatternmatchanyChareofdotsatisfycharnotChartextoneOfnoneOfspacespacesspaces1tabnewlinecrlfupperloweralphaNumletterdigithexDigitoctDigitdecimalsignedonceprefixsuffixhasstarplusselflesschoicecountoptionbetweenskipwithinfixedsepBysepBy1procshellinprocinshellechoerrreadlineexportunsetneedenvcdpwdhomerealpathlslstreemvmkdirmktreecprmrmdirrmtreedutestfiletestdirtouchtimesleepexitdie mktempdirmktempforkstdininputinhandlestdoutstderroutputappendreadonly writeonly appendonlycatgrepsedfindyeslimit limitWhiledatedatefileFormat%format makeFormatwduoxfegsrepr 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.MaybeNothingAsyncsystem-filepath-0.4.13.1Filesystem.Path.InternalFilePathsystemstreamGHC.ShowShowIntWordDouble>>-$fIsStringFormat$fCategory*Format 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