mirror of
https://github.com/roc-lang/roc.git
synced 2024-09-22 00:09:33 +03:00
fix map
This commit is contained in:
parent
0fbac382d0
commit
2a7bf2ae66
@ -696,20 +696,30 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
|
||||
)
|
||||
});
|
||||
|
||||
// map : Attr * (List a)
|
||||
// , Attr Shared (a -> b)
|
||||
// map : Attr (* | u) (List (Attr u a))
|
||||
// , Attr Shared (Attr u a -> b)
|
||||
// -> Attr * (List b)
|
||||
add_type(Symbol::LIST_MAP, {
|
||||
let u = tvar!();
|
||||
let a = tvar!();
|
||||
let b = tvar!();
|
||||
let star1 = tvar!();
|
||||
let star2 = tvar!();
|
||||
unique_function(
|
||||
vec![
|
||||
list_type(star1, a),
|
||||
SolvedType::Apply(
|
||||
Symbol::ATTR_ATTR,
|
||||
vec![shared(), SolvedType::Func(vec![flex(a)], Box::new(flex(b)))],
|
||||
vec![
|
||||
container(star1, vec![u]),
|
||||
SolvedType::Apply(Symbol::LIST_LIST, vec![attr_type(u, a)]),
|
||||
],
|
||||
),
|
||||
SolvedType::Apply(
|
||||
Symbol::ATTR_ATTR,
|
||||
vec![
|
||||
shared(),
|
||||
SolvedType::Func(vec![attr_type(u, a)], Box::new(flex(b))),
|
||||
],
|
||||
),
|
||||
],
|
||||
list_type(star2, b),
|
||||
|
@ -2028,7 +2028,7 @@ mod test_uniq_solve {
|
||||
fn list_map_identity() {
|
||||
infer_eq(
|
||||
indoc!(r#"\list -> List.map list (\x -> x)"#),
|
||||
"Attr * (Attr * (List a) -> Attr * (List a))",
|
||||
"Attr * (Attr (* | a) (List (Attr a b)) -> Attr * (List (Attr a b)))",
|
||||
);
|
||||
}
|
||||
|
||||
@ -2102,11 +2102,10 @@ mod test_uniq_solve {
|
||||
fn list_map() {
|
||||
infer_eq(
|
||||
indoc!("List.map"),
|
||||
"Attr * (Attr * (List a), Attr Shared (a -> b) -> Attr * (List b))",
|
||||
"Attr * (Attr (* | a) (List (Attr a b)), Attr Shared (Attr a b -> c) -> Attr * (List c))",
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
#[test]
|
||||
fn list_foldr() {
|
||||
infer_eq(
|
||||
@ -2114,7 +2113,6 @@ mod test_uniq_solve {
|
||||
"Attr * (Attr (* | a) (List (Attr a b)), Attr Shared (Attr a b, c -> c), c -> c)",
|
||||
);
|
||||
}
|
||||
*/
|
||||
|
||||
#[test]
|
||||
fn list_push_singleton() {
|
||||
|
Loading…
Reference in New Issue
Block a user