mirror of
https://github.com/roc-lang/roc.git
synced 2024-09-23 00:39:35 +03:00
Reorder args for List.walk and friends
This commit is contained in:
parent
b4e4ae2ff3
commit
1abebb7713
@ -746,24 +746,24 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
|
|||||||
Box::new(num_type(flex(TVAR1))),
|
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!(
|
add_top_level_function_type!(
|
||||||
Symbol::LIST_WALK,
|
Symbol::LIST_WALK,
|
||||||
vec![
|
vec![
|
||||||
list_type(flex(TVAR1)),
|
list_type(flex(TVAR1)),
|
||||||
closure(vec![flex(TVAR1), flex(TVAR2)], TVAR3, Box::new(flex(TVAR2))),
|
|
||||||
flex(TVAR2),
|
flex(TVAR2),
|
||||||
|
closure(vec![flex(TVAR2), flex(TVAR1)], TVAR3, Box::new(flex(TVAR2))),
|
||||||
],
|
],
|
||||||
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!(
|
add_top_level_function_type!(
|
||||||
Symbol::LIST_WALK_BACKWARDS,
|
Symbol::LIST_WALK_BACKWARDS,
|
||||||
vec![
|
vec![
|
||||||
list_type(flex(TVAR1)),
|
list_type(flex(TVAR1)),
|
||||||
closure(vec![flex(TVAR1), flex(TVAR2)], TVAR3, Box::new(flex(TVAR2))),
|
|
||||||
flex(TVAR2),
|
flex(TVAR2),
|
||||||
|
closure(vec![flex(TVAR2), flex(TVAR1)], TVAR3, Box::new(flex(TVAR2))),
|
||||||
],
|
],
|
||||||
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!(
|
add_top_level_function_type!(
|
||||||
Symbol::LIST_WALK_UNTIL,
|
Symbol::LIST_WALK_UNTIL,
|
||||||
vec![
|
vec![
|
||||||
list_type(flex(TVAR1)),
|
list_type(flex(TVAR1)),
|
||||||
|
flex(TVAR2),
|
||||||
closure(
|
closure(
|
||||||
vec![flex(TVAR1), flex(TVAR2)],
|
vec![flex(TVAR1), flex(TVAR2)],
|
||||||
TVAR3,
|
TVAR3,
|
||||||
Box::new(until_type(flex(TVAR2))),
|
Box::new(until_type(flex(TVAR2))),
|
||||||
),
|
),
|
||||||
flex(TVAR2),
|
|
||||||
],
|
],
|
||||||
Box::new(flex(TVAR2)),
|
Box::new(flex(TVAR2)),
|
||||||
);
|
);
|
||||||
|
@ -2050,8 +2050,8 @@ fn list_sum(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
|||||||
op: LowLevel::ListWalk,
|
op: LowLevel::ListWalk,
|
||||||
args: vec![
|
args: vec![
|
||||||
(list_var, Var(Symbol::ARG_1)),
|
(list_var, Var(Symbol::ARG_1)),
|
||||||
(closure_var, list_sum_add(num_var, var_store)),
|
|
||||||
(num_var, num(var_store.fresh(), 0)),
|
(num_var, num(var_store.fresh(), 0)),
|
||||||
|
(closure_var, list_sum_add(num_var, var_store)),
|
||||||
],
|
],
|
||||||
ret_var,
|
ret_var,
|
||||||
};
|
};
|
||||||
@ -2092,8 +2092,8 @@ fn list_product(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
|||||||
op: LowLevel::ListWalk,
|
op: LowLevel::ListWalk,
|
||||||
args: vec![
|
args: vec![
|
||||||
(list_var, Var(Symbol::ARG_1)),
|
(list_var, Var(Symbol::ARG_1)),
|
||||||
(closure_var, list_product_mul(num_var, var_store)),
|
|
||||||
(num_var, num(var_store.fresh(), 1)),
|
(num_var, num(var_store.fresh(), 1)),
|
||||||
|
(closure_var, list_product_mul(num_var, var_store)),
|
||||||
],
|
],
|
||||||
ret_var,
|
ret_var,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user