Quick StartTryGuideAPICommunityBlogGitHub

Standard Library

Below is the API for the OCaml standard library. It's directly copied over from the OCaml Manual, formatted to the Reason syntax and styled accordingly. The API docs are work-in-progress; we'll be polishing these gradually!

If you're targeting JavaScript, the API docs for BuckleScript includes all of below, plus JS-specific APIs.

Module CamlinternalOO

module CamlinternalOO: sig .. end
Run-time support for objects and classes. All functions in this module are for system use only, not for the casual user.


type tag;
type label;
type table;
type meth;
type t;
type obj;
type closure;
let public_method_label: string => tag;
let new_method: table => label;
let new_variable: (table, string) => int;
let new_methods_variables: (table, array(string), array(string)) => array(label);
let get_variable: (table, string) => int;
let get_variables: (table, array(string)) => array(int);
let get_method_label: (table, string) => label;
let get_method_labels: (table, array(string)) => array(label);
let get_method: (table, label) => meth;
let set_method: (table, label, meth) => unit;
let set_methods: (table, array(label)) => unit;
let narrow: (table, array(string), array(string), array(string)) => unit;
let widen: table => unit;
let add_initializer: (table, obj => unit) => unit;
let dummy_table: table;
let create_table: array(string) => table;
let init_class: table => unit;
let inherits:
  (table, array(string), array(string), array(string), (t, (table, obj) => Obj.t, t, obj), bool) =>
let make_class:
  (array(string), (table, Obj.t) => t) => (t, (table, Obj.t) => t, Obj.t => t, Obj.t);
type init_table;
let make_class_store: (array(string), table => t, init_table) => unit;
let dummy_class: ((string, int, int)) => (t, (table, Obj.t) => t, Obj.t => t, Obj.t);


let copy: ({..} as 'a) => 'a;
let create_object: table => obj;
let create_object_opt: (obj, table) => obj;
let run_initializers: (obj, table) => unit;
let run_initializers_opt: (obj, obj, table) => obj;
let create_object_and_run_initializers: (obj, table) => obj;
let send: (obj, tag) => t;
let sendcache: (obj, tag, t, int) => t;
let sendself: (obj, label) => t;
let get_public_method: (obj, tag) => closure;

Table cache

type tables;
let lookup_tables: (tables, array(closure)) => tables;

Builtins to reduce code size

type impl = 
| GetConst
| GetVar
| GetEnv
| GetMeth
| SetVar
| AppConst
| AppVar
| AppEnv
| AppMeth
| AppConstConst
| AppConstVar
| AppConstEnv
| AppConstMeth
| AppVarConst
| AppEnvConst
| AppMethConst
| MethAppConst
| MethAppVar
| MethAppEnv
| MethAppMeth
| SendConst
| SendVar
| SendEnv
| SendMeth
| Closure of closure


type params = {
   mutable compact_table : bool;
   mutable copy_parent : bool;
   mutable clean_when_copying : bool;
   mutable retry_count : int;
   mutable bucket_small_size : int;
let params: params;


type stats = {
   classes : int;
   methods : int;
   inst_vars : int;
let stats: unit => stats;