mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 14:24:45 +00:00
implement Num.compare
This commit is contained in:
parent
4c995b12a6
commit
1b42831973
8 changed files with 225 additions and 2 deletions
|
@ -265,6 +265,15 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
|
|||
),
|
||||
);
|
||||
|
||||
// compare : Num a, Num a -> [ LT, EQ, GT ]
|
||||
add_type(
|
||||
Symbol::NUM_COMPARE,
|
||||
SolvedType::Func(
|
||||
vec![num_type(flex(TVAR1)), num_type(flex(TVAR1))],
|
||||
Box::new(ordering_type()),
|
||||
),
|
||||
);
|
||||
|
||||
// toFloat : Num a -> Float
|
||||
add_type(
|
||||
Symbol::NUM_TO_FLOAT,
|
||||
|
@ -722,6 +731,19 @@ fn bool_type() -> SolvedType {
|
|||
SolvedType::Apply(Symbol::BOOL_BOOL, Vec::new())
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
fn ordering_type() -> SolvedType {
|
||||
// [ LT, EQ, GT ]
|
||||
SolvedType::TagUnion(
|
||||
vec![
|
||||
(TagName::Global("GT".into()), vec![]),
|
||||
(TagName::Global("EQ".into()), vec![]),
|
||||
(TagName::Global("LT".into()), vec![]),
|
||||
],
|
||||
Box::new(SolvedType::EmptyTagUnion),
|
||||
)
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
fn str_type() -> SolvedType {
|
||||
SolvedType::Apply(Symbol::STR_STR, Vec::new())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue