Idris-dev/test/sugar004/run
Edwin Brady 8f93b00307 Syntax for failures in pattern matching let/<-
let pat = val | <alternatives> in x'

...becomes...

  case val of
       pat => x'
       <alternatives>

  do pat <- val | <alternatives>
     p

...becomes...

  do x <- val
     case x of
          pat => p
          <alternatives>

So in particular, large effectful functions can deal with failure inline
rather than having lots of nested case blocks, e.g.

main : IO ()
main = do [p, a] <- getArgs
                      | [p] => putStrLn "No arguments!"
                      | (x :: y :: _) => putStrLn "Too many arguments!"
          print (foo (Just (cast a)))
2014-03-07 20:57:43 +00:00

7 lines
118 B
Bash
Executable File

#!/usr/bin/env bash
idris $@ sugar004.idr -o sugar004
./sugar004
./sugar004 42
./sugar004 42 100
rm -f sugar004 *.ibc