aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sil.icl20
1 files changed, 8 insertions, 12 deletions
diff --git a/sil.icl b/sil.icl
index 01eca9e..9dd7674 100644
--- a/sil.icl
+++ b/sil.icl
@@ -113,24 +113,20 @@ Start w
where
arg :: Parser String (CLI -> CLI)
arg = peek >>= \opt ->
- ( item "--pretty-print" *> pure (\cli -> {cli & prettyprint=True})
- <|> item "--check" *> pure (\cli -> {cli & check=True})
- <|> item "--compile" *> pure (\cli -> {cli & compile=True})
- <|> item "--generate" *> pure (\cli -> {cli & generate=True})
- <|> item "--run" *> pure (\cli -> {cli & run=True})
- <|> (satisfy isFilename >>= \name -> pure (\cli -> {cli & inputfile=name}))
+ ( (\ cli -> {cli & prettyprint=True}) <$ item "--pretty-print"
+ <|> (\ cli -> {cli & check=True}) <$ item "--check"
+ <|> (\ cli -> {cli & compile=True}) <$ item "--compile"
+ <|> (\ cli -> {cli & generate=True}) <$ item "--generate"
+ <|> (\ cli -> {cli & run=True}) <$ item "--run"
+ <|> (\name cli -> {cli & inputfile=name}) <$> satisfy isFilename
<?> P_Invalid "command line argument" opt
)
isFilename :: (String -> Bool)
isFilename = all (\c -> isAlphanum c || isMember c ['./-']) o fromString
- finish :: !Int !*File !*File !*World -> *World
- finish ret io err w
- # (_,w) = fclose io w
- # (_,w) = fclose err w
- # w = setReturnCode ret w
- = w
+ finish :: !Int !*File !*File -> *(*World -> *World)
+ finish ret io err = setReturnCode ret o snd o fclose err o snd o fclose io
sleep :: !Int !*World -> *(!Int, !*World)
sleep i w = code inline {