feat(List): add sum builtin

This commit is contained in:
rvcas 2020-11-15 11:08:27 -05:00
parent a55f30e512
commit 1c8bb74268
12 changed files with 197 additions and 38 deletions

View file

@ -683,6 +683,23 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
unique_function(vec![list_type(star1, a), flex(a)], bool_type(star2))
});
// sum : Attr * (List (Attr u (Num (Attr u num))))
// -> Attr v (Num (Attr v num))
add_type(Symbol::LIST_SUM, {
let_tvars! { star1, u, v, num };
unique_function(
vec![SolvedType::Apply(
Symbol::ATTR_ATTR,
vec![
flex(star1),
SolvedType::Apply(Symbol::LIST_LIST, vec![num_type(u, num)]),
],
)],
num_type(v, num),
)
});
// join : Attr * (List (Attr * (List a)))
// -> Attr * (List a)
add_type(Symbol::LIST_JOIN, {