With the following code

`let sum = lines -> Array.map(treatLine) -> Array.reduce((a,b)=>a + b, 0)`

`treatline`

being a function that convert a string to an int,

i receive the following error

`This has type: int But this function argument is expecting: ((int, int) => int, int) => (int, int) => int`

With the 0 accumulator being the source of error ?

I’m confused.

Thank you.

Are you sure you’ve open RescriptCore, it looks like you’re using a library that is t-last, so the first argument is a function and not t.

In reduce in Rescript Core, the initial value comes first instead of last like in JS. This is to make type inference work as good as it can. So, start with the initial value, then the function.

That example is just wrong, sorry. The function signature is correct though.

1 Like

Thank you, `reduce(xs, f, init)`

seems wrong too.

Here’s a PR to fix the example: docs: fix broken example for Array.reduce by jderochervlk · Pull Request #183 · rescript-association/rescript-core · GitHub

2 Likes