mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 14:24:45 +00:00
Implement List.map4
This commit is contained in:
parent
b29a029a33
commit
f9ed060e49
16 changed files with 419 additions and 16 deletions
|
@ -165,6 +165,7 @@ pub const SET_FROM_LIST: &str = "roc_builtins.dict.set_from_list";
|
|||
pub const LIST_MAP: &str = "roc_builtins.list.map";
|
||||
pub const LIST_MAP2: &str = "roc_builtins.list.map2";
|
||||
pub const LIST_MAP3: &str = "roc_builtins.list.map3";
|
||||
pub const LIST_MAP4: &str = "roc_builtins.list.map4";
|
||||
pub const LIST_MAP_WITH_INDEX: &str = "roc_builtins.list.map_with_index";
|
||||
pub const LIST_KEEP_IF: &str = "roc_builtins.list.keep_if";
|
||||
pub const LIST_KEEP_OKS: &str = "roc_builtins.list.keep_oks";
|
||||
|
|
|
@ -930,6 +930,27 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
|
|||
)
|
||||
};
|
||||
|
||||
{
|
||||
let_tvars! {a, b, c, d, e, cvar};
|
||||
|
||||
// map4 : List a, List b, List c, List d, (a, b, c, d -> e) -> List e
|
||||
add_top_level_function_type!(
|
||||
Symbol::LIST_MAP4,
|
||||
vec![
|
||||
list_type(flex(a)),
|
||||
list_type(flex(b)),
|
||||
list_type(flex(c)),
|
||||
list_type(flex(d)),
|
||||
closure(
|
||||
vec![flex(a), flex(b), flex(c), flex(d)],
|
||||
cvar,
|
||||
Box::new(flex(e))
|
||||
),
|
||||
],
|
||||
Box::new(list_type(flex(e))),
|
||||
)
|
||||
};
|
||||
|
||||
// append : List elem, elem -> List elem
|
||||
add_top_level_function_type!(
|
||||
Symbol::LIST_APPEND,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue