packages feed

pec-0.2.3: test_cases/TestFun.pec

module TestFun

imports
  Prelude

where

main :: () -> I32
main () = do
  putLn "testFun"
  assert (oneArg 4 'c')
  f = is_lower
  assert (f 'c')
  g = alsoOne 3
  assert (g 4 'c')
  h = new is_lower
  assert (@h 'c')
  assert (argFunPtr h)
  h <- is_upper
  assert (not (@h 'c'))
  assert (not (argFunPtr h))
  assert (argFun is_lower)
  assert (not (argFun is_upper))
  assert ((retFun True) 'c')
  assert (not ((retFun False) 'c'))
  putLn "done"
  0

twoArgs :: W32 -> Char -> Bool
twoArgs a b = True

oneArg :: W32 -> (Char -> Bool)
oneArg a = is_lower

alsoOne :: I32 -> (W32 -> Char -> Bool)
alsoOne a = twoArgs

argFun :: (Char -> Bool) -> Bool
argFun f = f 'c'

argFunPtr :: Ptr (Char -> Bool) -> Bool
argFunPtr p = @p 'c'

retFun :: Bool -> (Char -> Bool)
retFun a = if a is_lower is_upper