Reorder args for List.walk and friends

This commit is contained in:
Richard Feldman 2021-08-30 22:43:54 -04:00
parent b4e4ae2ff3
commit 1abebb7713
2 changed files with 8 additions and 8 deletions

View File

@ -746,24 +746,24 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
Box::new(num_type(flex(TVAR1))),
);
// walk : List elem, (elem -> accum -> accum), accum -> accum
// walk : List elem, state, (state, elem -> state) -> state
add_top_level_function_type!(
Symbol::LIST_WALK,
vec![
list_type(flex(TVAR1)),
closure(vec![flex(TVAR1), flex(TVAR2)], TVAR3, Box::new(flex(TVAR2))),
flex(TVAR2),
closure(vec![flex(TVAR2), flex(TVAR1)], TVAR3, Box::new(flex(TVAR2))),
],
Box::new(flex(TVAR2)),
);
// walkBackwards : List elem, (elem -> accum -> accum), accum -> accum
// walkBackwards : List elem, state, (state, elem -> state) -> state
add_top_level_function_type!(
Symbol::LIST_WALK_BACKWARDS,
vec![
list_type(flex(TVAR1)),
closure(vec![flex(TVAR1), flex(TVAR2)], TVAR3, Box::new(flex(TVAR2))),
flex(TVAR2),
closure(vec![flex(TVAR2), flex(TVAR1)], TVAR3, Box::new(flex(TVAR2))),
],
Box::new(flex(TVAR2)),
);
@ -779,17 +779,17 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
)
}
// walkUntil : List elem, (elem -> accum -> [ Continue accum, Stop accum ]), accum -> accum
// walkUntil : List elem, state, (state, elem -> [ Continue state, Stop state ]) -> state
add_top_level_function_type!(
Symbol::LIST_WALK_UNTIL,
vec![
list_type(flex(TVAR1)),
flex(TVAR2),
closure(
vec![flex(TVAR1), flex(TVAR2)],
TVAR3,
Box::new(until_type(flex(TVAR2))),
),
flex(TVAR2),
],
Box::new(flex(TVAR2)),
);

View File

@ -2050,8 +2050,8 @@ fn list_sum(symbol: Symbol, var_store: &mut VarStore) -> Def {
op: LowLevel::ListWalk,
args: vec![
(list_var, Var(Symbol::ARG_1)),
(closure_var, list_sum_add(num_var, var_store)),
(num_var, num(var_store.fresh(), 0)),
(closure_var, list_sum_add(num_var, var_store)),
],
ret_var,
};
@ -2092,8 +2092,8 @@ fn list_product(symbol: Symbol, var_store: &mut VarStore) -> Def {
op: LowLevel::ListWalk,
args: vec![
(list_var, Var(Symbol::ARG_1)),
(closure_var, list_product_mul(num_var, var_store)),
(num_var, num(var_store.fresh(), 1)),
(closure_var, list_product_mul(num_var, var_store)),
],
ret_var,
};