Fix some missing unary Num operation types

This commit is contained in:
Richard Feldman 2020-06-24 21:54:55 -04:00
parent 35446348a3
commit b3dfbeeec8
2 changed files with 60 additions and 0 deletions

View file

@ -271,6 +271,36 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
SolvedType::Func(vec![num_type(flex(TVAR1))], Box::new(float_type())), SolvedType::Func(vec![num_type(flex(TVAR1))], Box::new(float_type())),
); );
// isNegative : Num a -> Bool
add_type(
Symbol::NUM_IS_NEGATIVE,
SolvedType::Func(vec![num_type(flex(TVAR1))], Box::new(bool_type())),
);
// isPositive : Num a -> Bool
add_type(
Symbol::NUM_IS_POSITIVE,
SolvedType::Func(vec![num_type(flex(TVAR1))], Box::new(bool_type())),
);
// isZero : Num a -> Bool
add_type(
Symbol::NUM_IS_ZERO,
SolvedType::Func(vec![num_type(flex(TVAR1))], Box::new(bool_type())),
);
// isEven : Num a -> Bool
add_type(
Symbol::NUM_IS_EVEN,
SolvedType::Func(vec![num_type(flex(TVAR1))], Box::new(bool_type())),
);
// isOdd : Num a -> Bool
add_type(
Symbol::NUM_IS_ODD,
SolvedType::Func(vec![num_type(flex(TVAR1))], Box::new(bool_type())),
);
// Int module // Int module
// highest : Int // highest : Int

View file

@ -347,6 +347,36 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
unique_function(vec![num_type(UVAR1, TVAR1)], float_type(UVAR2)), unique_function(vec![num_type(UVAR1, TVAR1)], float_type(UVAR2)),
); );
// isNegative : Num a -> Bool
add_type(
Symbol::NUM_IS_NEGATIVE,
unique_function(vec![num_type(UVAR2, TVAR1)], bool_type(UVAR3)),
);
// isPositive : Num a -> Bool
add_type(
Symbol::NUM_IS_POSITIVE,
unique_function(vec![num_type(UVAR2, TVAR1)], bool_type(UVAR3)),
);
// isZero : Num a -> Bool
add_type(
Symbol::NUM_IS_ZERO,
unique_function(vec![num_type(UVAR2, TVAR1)], bool_type(UVAR3)),
);
// isEven : Num a -> Bool
add_type(
Symbol::NUM_IS_EVEN,
unique_function(vec![num_type(UVAR2, TVAR1)], bool_type(UVAR3)),
);
// isOdd : Num a -> Bool
add_type(
Symbol::NUM_IS_ODD,
unique_function(vec![num_type(UVAR2, TVAR1)], bool_type(UVAR3)),
);
// rem : Int, Int -> Result Int [ DivByZero ]* // rem : Int, Int -> Result Int [ DivByZero ]*
add_type( add_type(
Symbol::NUM_REM, Symbol::NUM_REM,