I’m learning about
I have this simple function that appends two lists:
let append = (xs, ys) => List.fold_right((x, acc) => [x, ...acc], xs, ys);
This compiles successfully.
The function arguments match the last two arguments of fold_right, so I tried changing to this:
let append2 = List.fold_right((x, acc) => [x, ...acc]);
This produces an error:
This expression's type contains type variables that can't be generalized: (list('_weak1), list('_weak1)) => list('_weak1)
I’m curious why the first version was able to compile successfully, but not the second?
I did notice that if I use the function then the error goes away:
However if I also try use it with another type:
It produces a compile error:
This has type: string But somewhere wanted: int