NOTE: The translations given here might not be literally correct. The output will in some instances have been simplified slightly to improve clarity.
(* ml *)
external f : 'a -> 'b -> 'ret = "" [@@bs.val]
let ret = f a b
// js
var ret = f(a, b);
(* ml *)
external f : 'self -> 'ret = "" [@@bs.get]
let ret = f self
// js
var ret = self.f;
(* ml *)
external f : 'self -> 'a -> 'ret = "" [@@bs.set]
let ret = f self a
// js
var ret = self.f = a;
(* ml *)
external f : 'self -> 'a -> 'b -> 'ret = "" [@@bs.send]
let ret = f self a b
// js
var ret = self.f(a, b);
(* ml *)
external f : 'a -> 'b -> 'ret = "" [@@bs.send.pipe: 'self]
let ret = f a b self
(* or *)
let ret = self |> f a b
// js
var ret = self.f(a, b);
(* ml *)
external f : unit -> 'ret = "" [@@bs.new]
let ret = f ()
// js
var ret = new f();
(* ml *)
external f : unit -> unit = "" [@@bs.module "m"]
let _ = f ()
// js
var m = require('m');
m.f();
(* ml *)
external f : 'self -> 'key -> 'ret = "" [@@bs.get_index]
let ret = f self key
// js
var ret = self[key];
(* ml *)
external f : 'self -> 'key -> 'a -> 'ret = "" [@@bs.set_index]
let ret = f self key a
// js
var ret = self[key] = a;
(* ml *)
external f : 'a -> 'b array -> 'ret = "" [@@bs.val] [@@bs.splice]
let ret = f a [|b1; b2; b3|]
// js
var ret = f(a, b1, b2, b3);
(* ml *)
external f : unit -> unit = "" [@@bs.val] [@@bs.scope "a", "b"]
let _ = f ()
// js
a.b.f();
(* ml *)
external f : 'a -> _ [@bs.as "b"] -> 'c -> unit = "" [@@bs.val]
let _ = f a c
// js
f(a, "b", c);
(* ml *)
external f : ([`a] [@bs.string]) -> unit = "" [@@bs.val]
let _ = f `a
// js
f("a");
(* ml *)
external f : ([`a] [@bs.int]) -> unit = "" [@@bs.val]
let _ = f `a
// js
f(0);
(* ml *)
external f : ([`int of int] [@bs.unwrap]) -> unit = "" [@@bs.val]
let _ = f (`int 42)
// js
f(42);
(* ml *)
external f : 'a -> 'b [@bs.ignore] -> 'c -> unit = "" [@@bs.val]
let _ = f a b c
// js
f(a, c);
(* ml *)
let re = [%re "/na/gi"]
// js
var re = /na/gi;
(* ml *)
let obj = [%obj { property = "value" }]
// js
var obj = {
property: "value"
};
(* ml *)
let raw = [%raw "1 + 2 == 3"]
// js
var raw = (1 + 2 == 3);
(* ml *)
[%debugger]
// js
debugger;