reason icon indicating copy to clipboard operation
reason copied to clipboard

`bs` and `bs.obj` ppx apply deeply

Open bobzhang opened this issue 4 years ago • 1 comments

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

bobzhang avatar Jun 01 '20 08:06 bobzhang

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;

bobzhang avatar Jun 01 '20 08:06 bobzhang