This commit is contained in:
Chad Stearns 2020-06-19 21:02:52 -04:00
parent 6d6ccab513
commit 3af6d5f0b3
5 changed files with 142 additions and 0 deletions

View file

@ -615,6 +615,30 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
)
});
// repeat : Int, a -> List a
add_type(Symbol::LIST_REPEAT, {
let u = UVAR1;
let v = UVAR2;
let star1 = UVAR4;
let star2 = UVAR5;
let a = TVAR1;
unique_function(
vec![
int_type(star1),
SolvedType::Apply(Symbol::ATTR_ATTR, vec![disjunction(u, vec![v]), flex(a)]),
],
SolvedType::Apply(
Symbol::ATTR_ATTR,
vec![
boolean(star2),
SolvedType::Apply(Symbol::LIST_LIST, vec![attr_type(u, a)]),
],
),
)
});
// push : Attr (w | u | v) (List (Attr u a))
// , Attr (u | v) a
// -> Attr * (List (Attr u a))