idris-0.9.11: test/primitives003/test038.idr
module Main
test : DecEq a => a -> a -> Bool
test i1 i2 with (decEq i1 i2)
test i1 i1 | Yes refl = True
test i1 i2 | No p = False
main : IO ()
main = do
-- Primitives
putStrLn . show $ test (the Int 3) (the Int 3)
putStrLn . show $ test (the Integer 3) (the Integer 4)
putStrLn . show $ test "hello" "hello"
putStrLn . show $ test "hello" "world"
putStrLn . show $ test (the Char '\0') (the Char '\0')
putStrLn . show $ test (the Char '\1') (the Char '\2')
-- Non-primitives
-- Vect
putStrLn . show $
test (the (Vect _ Int) [1,2,3]) (the (Vect _ Int) [1,2,3])
putStrLn . show $
test (the (Vect _ Int) [1,2,3]) (the (Vect _ Int) [1,2,4])
-- List
putStrLn . show $
test (the (List Int) [1,2,3]) (the (List Int) [1,2,3])
putStrLn . show $
test (the (List Int) [1,2,3]) (the (List Int) [1,2])
putStrLn . show $
test (the (List Int) [1,2,3]) (the (List Int) [1,2,4])
-- Tuple
putStrLn . show $
test (the (Int, Int) (1, 1)) (the (Int, Int) (1, 1))
putStrLn . show $
test (the (Int, Int) (1, 2)) (the (Int, Int) (1, 1))
-- Unit
putStrLn . show $ test () ()
-- Booleans
putStrLn . show $ test True True
putStrLn . show $ test True False
-- Float
putStrLn . show $ test 1.0 1.0
putStrLn . show $ test 1.0 2.0
-- Maybe
putStrLn . show $ test (Just "hello") (Just "hello")
putStrLn . show $ test (Just "hello") (Just "world")
putStrLn . show $ test (Just "hello") Nothing
-- Either
putStrLn . show $ test (the (Either String Bool) (Left "hello"))
(the (Either String Bool) (Left "hello"))
putStrLn . show $ test (the (Either String Bool) (Left "hello"))
(the (Either String Bool) (Left "world"))
putStrLn . show $ test (Left "hello") (Right "world")
putStrLn . show $ test (Left "hello") (Right False)
-- Fin
putStrLn . show $ test (the (Fin (S (S (S (Z))))) (fS (fS (fZ))))
(the (Fin (S (S (S (Z))))) (fS (fS (fZ))))
putStrLn . show $ test (the (Fin (S (S (S (Z))))) (fS (fS (fZ))))
(the (Fin (S (S (S (Z))))) (fS (fZ)))
-- Nat
putStrLn . show $ test (S (S (S Z))) (S (S (S Z)))
putStrLn . show $ test (S (S (S Z))) (S (S Z))