reason
reason copied to clipboard
`bs` and `bs.obj` ppx apply deeply
When using [@bs] to uncurry a function it is applied deeply. Probably it's better to apply it only on the most shallow level:
[@bs] uncurriedFun({
normalFun(1)
});
In this case the output of the ppx is that normalFun is also called uncurried.
A similar thing happens with [@bs.obj]
. All fields (even if it's part of the field expression) are converted to objects.
example:
[%bs.obj]
{
test: {actually_a_record: 1}
}
cc @jfrolich moved from https://github.com/BuckleScript/bucklescript/issues/4306
note the bs attribute looks good to me.
let u =(.f0,f1)=>
f0(. {
f1(1)
});
The inferred type is
let u: (. (. 'a) => 'b, int => 'a) => 'b;