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.

sig

  type t
  external repr : 'a -> Obj.t = "%identity"
  external obj : Obj.t -> 'a = "%identity"
  external magic : 'a -> 'b = "%identity"
  external is_block : Obj.t -> bool = "caml_obj_is_block"
  external is_int : Obj.t -> bool = "%obj_is_int"
  external tag : Obj.t -> int = "caml_obj_tag"
  external set_tag : Obj.t -> int -> unit = "caml_obj_set_tag"
  external size : Obj.t -> int = "%obj_size"
  external field : Obj.t -> int -> Obj.t = "%obj_field"
  external set_field : Obj.t -> int -> Obj.t -> unit = "%obj_set_field"
  val double_field : Obj.t -> int -> float
  val set_double_field : Obj.t -> int -> float -> unit
  external new_block : int -> int -> Obj.t = "caml_obj_block"
  external dup : Obj.t -> Obj.t = "caml_obj_dup"
  external truncate : Obj.t -> int -> unit = "caml_obj_truncate"
  external add_offset : Obj.t -> Int32.t -> Obj.t = "caml_obj_add_offset"
  val first_non_constant_constructor_tag : int
  val last_non_constant_constructor_tag : int
  val lazy_tag : int
  val closure_tag : int
  val object_tag : int
  val infix_tag : int
  val forward_tag : int
  val no_scan_tag : int
  val abstract_tag : int
  val string_tag : int
  val double_tag : int
  val double_array_tag : int
  val custom_tag : int
  val final_tag : int
  val int_tag : int
  val out_of_heap_tag : int
  val unaligned_tag : int
  val extension_name : 'a -> string
  val extension_id : 'a -> int
  val extension_slot : 'a -> Obj.t
  val marshal : Obj.t -> bytes
  val unmarshal : bytes -> int -> Obj.t * int
end