shithub: MicroHs

ref: 5bcc30b7813a7bd15717f44d57cfb0dcbab3c87e
dir: /tests/MultiIf.hs/

View raw version
module MultiIf where

f :: Int -> Int
f x =
  let (a, b) | x == 0 = (2,3)
             | otherwise = (3, 4)
      (c, d) = (10, 11)
  in  a*c + b*d

g :: Int -> Int
g x =
  if { | x <  0 -> -1
     ; | x == 0 -> 0
     ; | x >  0 -> 1 }

h :: Int -> Int
h x =
  if | x <  0 -> if | x < -10   -> -2
                    | otherwise -> -1
     | x == 0 -> 0
     | x >  0 -> 1

main :: IO ()
main = do
  print (f 0)
  print (f 1)
  print (g 100)
  print (g 0)
  print (g (-5))
  print (h (-100))
  print (h (-2))
  print (h 0)
  print (h 100)