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 error =
      E2BIG
    | EACCES
    | EAGAIN
    | EBADF
    | EBUSY
    | ECHILD
    | EDEADLK
    | EDOM
    | EEXIST
    | EFAULT
    | EFBIG
    | EINTR
    | EINVAL
    | EIO
    | EISDIR
    | EMFILE
    | EMLINK
    | ENAMETOOLONG
    | ENFILE
    | ENODEV
    | ENOENT
    | ENOEXEC
    | ENOLCK
    | ENOMEM
    | ENOSPC
    | ENOSYS
    | ENOTDIR
    | ENOTEMPTY
    | ENOTTY
    | ENXIO
    | EPERM
    | EPIPE
    | ERANGE
    | EROFS
    | ESPIPE
    | ESRCH
    | EXDEV
    | EWOULDBLOCK
    | EINPROGRESS
    | EALREADY
    | ENOTSOCK
    | EDESTADDRREQ
    | EMSGSIZE
    | EPROTOTYPE
    | ENOPROTOOPT
    | EPROTONOSUPPORT
    | ESOCKTNOSUPPORT
    | EOPNOTSUPP
    | EPFNOSUPPORT
    | EAFNOSUPPORT
    | EADDRINUSE
    | EADDRNOTAVAIL
    | ENETDOWN
    | ENETUNREACH
    | ENETRESET
    | ECONNABORTED
    | ECONNRESET
    | ENOBUFS
    | EISCONN
    | ENOTCONN
    | ESHUTDOWN
    | ETOOMANYREFS
    | ETIMEDOUT
    | ECONNREFUSED
    | EHOSTDOWN
    | EHOSTUNREACH
    | ELOOP
    | EOVERFLOW
    | EUNKNOWNERR of int
  exception Unix_error of Unix.error * string * string
  val error_message : Unix.error -> string
  val handle_unix_error : ('a -> 'b) -> 'a -> 'b
  val environment : unit -> string array
  val getenv : string -> string
  val putenv : string -> string -> unit
  type process_status = WEXITED of int | WSIGNALED of int | WSTOPPED of int
  type wait_flag = WNOHANG | WUNTRACED
  val execv : string -> string array -> 'a
  val execve : string -> string array -> string array -> 'a
  val execvp : string -> string array -> 'a
  val execvpe : string -> string array -> string array -> 'a
  val fork : unit -> int
  val wait : unit -> int * Unix.process_status
  val waitpid : Unix.wait_flag list -> int -> int * Unix.process_status
  val system : string -> Unix.process_status
  val getpid : unit -> int
  val getppid : unit -> int
  val nice : int -> int
  type file_descr
  val stdin : Unix.file_descr
  val stdout : Unix.file_descr
  val stderr : Unix.file_descr
  type open_flag =
      O_RDONLY
    | O_WRONLY
    | O_RDWR
    | O_NONBLOCK
    | O_APPEND
    | O_CREAT
    | O_TRUNC
    | O_EXCL
    | O_NOCTTY
    | O_DSYNC
    | O_SYNC
    | O_RSYNC
    | O_SHARE_DELETE
    | O_CLOEXEC
  type file_perm = int
  val openfile :
    string -> Unix.open_flag list -> Unix.file_perm -> Unix.file_descr
  val close : Unix.file_descr -> unit
  val read : Unix.file_descr -> bytes -> int -> int -> int
  val write : Unix.file_descr -> bytes -> int -> int -> int
  val single_write : Unix.file_descr -> bytes -> int -> int -> int
  val write_substring : Unix.file_descr -> string -> int -> int -> int
  val single_write_substring : Unix.file_descr -> string -> int -> int -> int
  val in_channel_of_descr : Unix.file_descr -> Pervasives.in_channel
  val out_channel_of_descr : Unix.file_descr -> Pervasives.out_channel
  val descr_of_in_channel : Pervasives.in_channel -> Unix.file_descr
  val descr_of_out_channel : Pervasives.out_channel -> Unix.file_descr
  type seek_command = SEEK_SET | SEEK_CUR | SEEK_END
  val lseek : Unix.file_descr -> int -> Unix.seek_command -> int
  val truncate : string -> int -> unit
  val ftruncate : Unix.file_descr -> int -> unit
  type file_kind = S_REG | S_DIR | S_CHR | S_BLK | S_LNK | S_FIFO | S_SOCK
  type stats = {
    st_dev : int;
    st_ino : int;
    st_kind : Unix.file_kind;
    st_perm : Unix.file_perm;
    st_nlink : int;
    st_uid : int;
    st_gid : int;
    st_rdev : int;
    st_size : int;
    st_atime : float;
    st_mtime : float;
    st_ctime : float;
  }
  val stat : string -> Unix.stats
  val lstat : string -> Unix.stats
  val fstat : Unix.file_descr -> Unix.stats
  val isatty : Unix.file_descr -> bool
  module LargeFile :
    sig
      val lseek : Unix.file_descr -> int64 -> Unix.seek_command -> int64
      val truncate : string -> int64 -> unit
      val ftruncate : Unix.file_descr -> int64 -> unit
      type stats = {
        st_dev : int;
        st_ino : int;
        st_kind : Unix.file_kind;
        st_perm : Unix.file_perm;
        st_nlink : int;
        st_uid : int;
        st_gid : int;
        st_rdev : int;
        st_size : int64;
        st_atime : float;
        st_mtime : float;
        st_ctime : float;
      }
      val stat : string -> Unix.LargeFile.stats
      val lstat : string -> Unix.LargeFile.stats
      val fstat : Unix.file_descr -> Unix.LargeFile.stats
    end
  val unlink : string -> unit
  val rename : string -> string -> unit
  val link : string -> string -> unit
  type access_permission = R_OK | W_OK | X_OK | F_OK
  val chmod : string -> Unix.file_perm -> unit
  val fchmod : Unix.file_descr -> Unix.file_perm -> unit
  val chown : string -> int -> int -> unit
  val fchown : Unix.file_descr -> int -> int -> unit
  val umask : int -> int
  val access : string -> Unix.access_permission list -> unit
  val dup : Unix.file_descr -> Unix.file_descr
  val dup2 : Unix.file_descr -> Unix.file_descr -> unit
  val set_nonblock : Unix.file_descr -> unit
  val clear_nonblock : Unix.file_descr -> unit
  val set_close_on_exec : Unix.file_descr -> unit
  val clear_close_on_exec : Unix.file_descr -> unit
  val mkdir : string -> Unix.file_perm -> unit
  val rmdir : string -> unit
  val chdir : string -> unit
  val getcwd : unit -> string
  val chroot : string -> unit
  type dir_handle
  val opendir : string -> Unix.dir_handle
  val readdir : Unix.dir_handle -> string
  val rewinddir : Unix.dir_handle -> unit
  val closedir : Unix.dir_handle -> unit
  val pipe : unit -> Unix.file_descr * Unix.file_descr
  val mkfifo : string -> Unix.file_perm -> unit
  val create_process :
    string ->
    string array ->
    Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> int
  val create_process_env :
    string ->
    string array ->
    string array ->
    Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> int
  val open_process_in : string -> Pervasives.in_channel
  val open_process_out : string -> Pervasives.out_channel
  val open_process : string -> Pervasives.in_channel * Pervasives.out_channel
  val open_process_full :
    string ->
    string array ->
    Pervasives.in_channel * Pervasives.out_channel * Pervasives.in_channel
  val close_process_in : Pervasives.in_channel -> Unix.process_status
  val close_process_out : Pervasives.out_channel -> Unix.process_status
  val close_process :
    Pervasives.in_channel * Pervasives.out_channel -> Unix.process_status
  val close_process_full :
    Pervasives.in_channel * Pervasives.out_channel * Pervasives.in_channel ->
    Unix.process_status
  val symlink : string -> string -> unit
  val readlink : string -> string
  val select :
    Unix.file_descr list ->
    Unix.file_descr list ->
    Unix.file_descr list ->
    float ->
    Unix.file_descr list * Unix.file_descr list * Unix.file_descr list
  type lock_command =
      F_ULOCK
    | F_LOCK
    | F_TLOCK
    | F_TEST
    | F_RLOCK
    | F_TRLOCK
  val lockf : Unix.file_descr -> Unix.lock_command -> int -> unit
  val kill : int -> int -> unit
  type sigprocmask_command = SIG_SETMASK | SIG_BLOCK | SIG_UNBLOCK
  val sigprocmask : Unix.sigprocmask_command -> int list -> int list
  val sigpending : unit -> int list
  val sigsuspend : int list -> unit
  val pause : unit -> unit
  type process_times = {
    tms_utime : float;
    tms_stime : float;
    tms_cutime : float;
    tms_cstime : float;
  }
  type tm = {
    tm_sec : int;
    tm_min : int;
    tm_hour : int;
    tm_mday : int;
    tm_mon : int;
    tm_year : int;
    tm_wday : int;
    tm_yday : int;
    tm_isdst : bool;
  }
  val time : unit -> float
  val gettimeofday : unit -> float
  val gmtime : float -> Unix.tm
  val localtime : float -> Unix.tm
  val mktime : Unix.tm -> float * Unix.tm
  val alarm : int -> int
  val sleep : int -> unit
  val times : unit -> Unix.process_times
  val utimes : string -> float -> float -> unit
  type interval_timer = ITIMER_REAL | ITIMER_VIRTUAL | ITIMER_PROF
  type interval_timer_status = { it_interval : float; it_value : float; }
  val getitimer : Unix.interval_timer -> Unix.interval_timer_status
  val setitimer :
    Unix.interval_timer ->
    Unix.interval_timer_status -> Unix.interval_timer_status
  val getuid : unit -> int
  val geteuid : unit -> int
  val setuid : int -> unit
  val getgid : unit -> int
  val getegid : unit -> int
  val setgid : int -> unit
  val getgroups : unit -> int array
  val setgroups : int array -> unit
  val initgroups : string -> int -> unit
  type passwd_entry = {
    pw_name : string;
    pw_passwd : string;
    pw_uid : int;
    pw_gid : int;
    pw_gecos : string;
    pw_dir : string;
    pw_shell : string;
  }
  type group_entry = {
    gr_name : string;
    gr_passwd : string;
    gr_gid : int;
    gr_mem : string array;
  }
  val getlogin : unit -> string
  val getpwnam : string -> Unix.passwd_entry
  val getgrnam : string -> Unix.group_entry
  val getpwuid : int -> Unix.passwd_entry
  val getgrgid : int -> Unix.group_entry
  type inet_addr
  val inet_addr_of_string : string -> Unix.inet_addr
  val string_of_inet_addr : Unix.inet_addr -> string
  val inet_addr_any : Unix.inet_addr
  val inet_addr_loopback : Unix.inet_addr
  val inet6_addr_any : Unix.inet_addr
  val inet6_addr_loopback : Unix.inet_addr
  type socket_domain = PF_UNIX | PF_INET | PF_INET6
  type socket_type = SOCK_STREAM | SOCK_DGRAM | SOCK_RAW | SOCK_SEQPACKET
  type sockaddr = ADDR_UNIX of string | ADDR_INET of Unix.inet_addr * int
  val socket :
    Unix.socket_domain -> Unix.socket_type -> int -> Unix.file_descr
  val domain_of_sockaddr : Unix.sockaddr -> Unix.socket_domain
  val socketpair :
    Unix.socket_domain ->
    Unix.socket_type -> int -> Unix.file_descr * Unix.file_descr
  val accept : Unix.file_descr -> Unix.file_descr * Unix.sockaddr
  val bind : Unix.file_descr -> Unix.sockaddr -> unit
  val connect : Unix.file_descr -> Unix.sockaddr -> unit
  val listen : Unix.file_descr -> int -> unit
  type shutdown_command = SHUTDOWN_RECEIVE | SHUTDOWN_SEND | SHUTDOWN_ALL
  val shutdown : Unix.file_descr -> Unix.shutdown_command -> unit
  val getsockname : Unix.file_descr -> Unix.sockaddr
  val getpeername : Unix.file_descr -> Unix.sockaddr
  type msg_flag = MSG_OOB | MSG_DONTROUTE | MSG_PEEK
  val recv :
    Unix.file_descr -> bytes -> int -> int -> Unix.msg_flag list -> int
  val recvfrom :
    Unix.file_descr ->
    bytes -> int -> int -> Unix.msg_flag list -> int * Unix.sockaddr
  val send :
    Unix.file_descr -> bytes -> int -> int -> Unix.msg_flag list -> int
  val send_substring :
    Unix.file_descr -> string -> int -> int -> Unix.msg_flag list -> int
  val sendto :
    Unix.file_descr ->
    bytes -> int -> int -> Unix.msg_flag list -> Unix.sockaddr -> int
  val sendto_substring :
    Unix.file_descr ->
    string -> int -> int -> Unix.msg_flag list -> Unix.sockaddr -> int
  type socket_bool_option =
      SO_DEBUG
    | SO_BROADCAST
    | SO_REUSEADDR
    | SO_KEEPALIVE
    | SO_DONTROUTE
    | SO_OOBINLINE
    | SO_ACCEPTCONN
    | TCP_NODELAY
    | IPV6_ONLY
  type socket_int_option =
      SO_SNDBUF
    | SO_RCVBUF
    | SO_ERROR
    | SO_TYPE
    | SO_RCVLOWAT
    | SO_SNDLOWAT
  type socket_optint_option = SO_LINGER
  type socket_float_option = SO_RCVTIMEO | SO_SNDTIMEO
  val getsockopt : Unix.file_descr -> Unix.socket_bool_option -> bool
  val setsockopt : Unix.file_descr -> Unix.socket_bool_option -> bool -> unit
  val getsockopt_int : Unix.file_descr -> Unix.socket_int_option -> int
  val setsockopt_int :
    Unix.file_descr -> Unix.socket_int_option -> int -> unit
  val getsockopt_optint :
    Unix.file_descr -> Unix.socket_optint_option -> int option
  val setsockopt_optint :
    Unix.file_descr -> Unix.socket_optint_option -> int option -> unit
  val getsockopt_float : Unix.file_descr -> Unix.socket_float_option -> float
  val setsockopt_float :
    Unix.file_descr -> Unix.socket_float_option -> float -> unit
  val getsockopt_error : Unix.file_descr -> Unix.error option
  val open_connection :
    Unix.sockaddr -> Pervasives.in_channel * Pervasives.out_channel
  val shutdown_connection : Pervasives.in_channel -> unit
  val establish_server :
    (Pervasives.in_channel -> Pervasives.out_channel -> unit) ->
    Unix.sockaddr -> unit
  type host_entry = {
    h_name : string;
    h_aliases : string array;
    h_addrtype : Unix.socket_domain;
    h_addr_list : Unix.inet_addr array;
  }
  type protocol_entry = {
    p_name : string;
    p_aliases : string array;
    p_proto : int;
  }
  type service_entry = {
    s_name : string;
    s_aliases : string array;
    s_port : int;
    s_proto : string;
  }
  val gethostname : unit -> string
  val gethostbyname : string -> Unix.host_entry
  val gethostbyaddr : Unix.inet_addr -> Unix.host_entry
  val getprotobyname : string -> Unix.protocol_entry
  val getprotobynumber : int -> Unix.protocol_entry
  val getservbyname : string -> string -> Unix.service_entry
  val getservbyport : int -> string -> Unix.service_entry
  type addr_info = {
    ai_family : Unix.socket_domain;
    ai_socktype : Unix.socket_type;
    ai_protocol : int;
    ai_addr : Unix.sockaddr;
    ai_canonname : string;
  }
  type getaddrinfo_option =
      AI_FAMILY of Unix.socket_domain
    | AI_SOCKTYPE of Unix.socket_type
    | AI_PROTOCOL of int
    | AI_NUMERICHOST
    | AI_CANONNAME
    | AI_PASSIVE
  val getaddrinfo :
    string -> string -> Unix.getaddrinfo_option list -> Unix.addr_info list
  type name_info = { ni_hostname : string; ni_service : string; }
  type getnameinfo_option =
      NI_NOFQDN
    | NI_NUMERICHOST
    | NI_NAMEREQD
    | NI_NUMERICSERV
    | NI_DGRAM
  val getnameinfo :
    Unix.sockaddr -> Unix.getnameinfo_option list -> Unix.name_info
  type terminal_io = {
    mutable c_ignbrk : bool;
    mutable c_brkint : bool;
    mutable c_ignpar : bool;
    mutable c_parmrk : bool;
    mutable c_inpck : bool;
    mutable c_istrip : bool;
    mutable c_inlcr : bool;
    mutable c_igncr : bool;
    mutable c_icrnl : bool;
    mutable c_ixon : bool;
    mutable c_ixoff : bool;
    mutable c_opost : bool;
    mutable c_obaud : int;
    mutable c_ibaud : int;
    mutable c_csize : int;
    mutable c_cstopb : int;
    mutable c_cread : bool;
    mutable c_parenb : bool;
    mutable c_parodd : bool;
    mutable c_hupcl : bool;
    mutable c_clocal : bool;
    mutable c_isig : bool;
    mutable c_icanon : bool;
    mutable c_noflsh : bool;
    mutable c_echo : bool;
    mutable c_echoe : bool;
    mutable c_echok : bool;
    mutable c_echonl : bool;
    mutable c_vintr : char;
    mutable c_vquit : char;
    mutable c_verase : char;
    mutable c_vkill : char;
    mutable c_veof : char;
    mutable c_veol : char;
    mutable c_vmin : int;
    mutable c_vtime : int;
    mutable c_vstart : char;
    mutable c_vstop : char;
  }
  val tcgetattr : Unix.file_descr -> Unix.terminal_io
  type setattr_when = TCSANOW | TCSADRAIN | TCSAFLUSH
  val tcsetattr :
    Unix.file_descr -> Unix.setattr_when -> Unix.terminal_io -> unit
  val tcsendbreak : Unix.file_descr -> int -> unit
  val tcdrain : Unix.file_descr -> unit
  type flush_queue = TCIFLUSH | TCOFLUSH | TCIOFLUSH
  val tcflush : Unix.file_descr -> Unix.flush_queue -> unit
  type flow_action = TCOOFF | TCOON | TCIOFF | TCION
  val tcflow : Unix.file_descr -> Unix.flow_action -> unit
  val setsid : unit -> int
end