Reason · Reason lets you write simple, fast and quality type safe code while leveraging both the JavaScript & OCaml ecosystems.

Reason
sig
 type error =
  Unix.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 UnixLabels.error * string * string
 val error_message : UnixLabels.error -> string
 val handle_unix_error : ('a -> 'b) -> 'a -> 'b
 val environment : unit -> string array
 val unsafe_environment : unit -> string array
 val getenv : string -> string
 val unsafe_getenv : string -> string
 val putenv : string -> string -> unit
 type process_status =
  Unix.process_status =
   WEXITED of int
  | WSIGNALED of int
  | WSTOPPED of int
 type wait_flag = Unix.wait_flag = WNOHANG | WUNTRACED
 val execv : prog:string -> args:string array -> 'a
 val execve : prog:string -> args:string array -> env:string array -> 'a
 val execvp : prog:string -> args:string array -> 'a
 val execvpe : prog:string -> args:string array -> env:string array -> 'a
 val fork : unit -> int
 val wait : unit -> int * UnixLabels.process_status
 val waitpid :
  mode:UnixLabels.wait_flag list -> int -> int * UnixLabels.process_status
 val system : string -> UnixLabels.process_status
 val _exit : int -> 'a
 val getpid : unit -> int
 val getppid : unit -> int
 val nice : int -> int
 type file_descr = Unix.file_descr
 val stdin : UnixLabels.file_descr
 val stdout : UnixLabels.file_descr
 val stderr : UnixLabels.file_descr
 type open_flag =
  Unix.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
  | O_KEEPEXEC
 type file_perm = int
 val openfile :
  string ->
  mode:UnixLabels.open_flag list ->
  perm:UnixLabels.file_perm -> UnixLabels.file_descr
 val close : UnixLabels.file_descr -> unit
 val fsync : UnixLabels.file_descr -> unit
 val read : UnixLabels.file_descr -> buf:bytes -> pos:int -> len:int -> int
 val write : UnixLabels.file_descr -> buf:bytes -> pos:int -> len:int -> int
 val single_write :
  UnixLabels.file_descr -> buf:bytes -> pos:int -> len:int -> int
 val write_substring :
  UnixLabels.file_descr -> buf:string -> pos:int -> len:int -> int
 val single_write_substring :
  UnixLabels.file_descr -> buf:string -> pos:int -> len:int -> int
 val in_channel_of_descr : UnixLabels.file_descr -> Stdlib.in_channel
 val out_channel_of_descr : UnixLabels.file_descr -> Stdlib.out_channel
 val descr_of_in_channel : Stdlib.in_channel -> UnixLabels.file_descr
 val descr_of_out_channel : Stdlib.out_channel -> UnixLabels.file_descr
 type seek_command = Unix.seek_command = SEEK_SET | SEEK_CUR | SEEK_END
 val lseek :
  UnixLabels.file_descr -> int -> mode:UnixLabels.seek_command -> int
 val truncate : string -> len:int -> unit
 val ftruncate : UnixLabels.file_descr -> len:int -> unit
 type file_kind =
  Unix.file_kind =
   S_REG
  | S_DIR
  | S_CHR
  | S_BLK
  | S_LNK
  | S_FIFO
  | S_SOCK
 type stats =
  Unix.stats = {
  st_dev : int;
  st_ino : int;
  st_kind : UnixLabels.file_kind;
  st_perm : UnixLabels.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 -> UnixLabels.stats
 val lstat : string -> UnixLabels.stats
 val fstat : UnixLabels.file_descr -> UnixLabels.stats
 val isatty : UnixLabels.file_descr -> bool
 module LargeFile :
  sig
   val lseek :
    UnixLabels.file_descr ->
    int64 -> mode:UnixLabels.seek_command -> int64
   val truncate : string -> len:int64 -> unit
   val ftruncate : UnixLabels.file_descr -> len:int64 -> unit
   type stats =
    Unix.LargeFile.stats = {
    st_dev : int;
    st_ino : int;
    st_kind : UnixLabels.file_kind;
    st_perm : UnixLabels.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 -> UnixLabels.LargeFile.stats
   val lstat : string -> UnixLabels.LargeFile.stats
   val fstat : UnixLabels.file_descr -> UnixLabels.LargeFile.stats
  end
 val map_file :
  UnixLabels.file_descr ->
  ?pos:int64 ->
  kind:('a, 'b) Stdlib.Bigarray.kind ->
  layout:'c Stdlib.Bigarray.layout ->
  shared:bool -> dims:int array -> ('a, 'b, 'c) Stdlib.Bigarray.Genarray.t
 val unlink : string -> unit
 val rename : src:string -> dst:string -> unit
 val link : ?follow:bool -> src:string -> dst:string -> unit
 val realpath : string -> string
 type access_permission = Unix.access_permission = R_OK | W_OK | X_OK | F_OK
 val chmod : string -> perm:UnixLabels.file_perm -> unit
 val fchmod : UnixLabels.file_descr -> perm:UnixLabels.file_perm -> unit
 val chown : string -> uid:int -> gid:int -> unit
 val fchown : UnixLabels.file_descr -> uid:int -> gid:int -> unit
 val umask : int -> int
 val access : string -> perm:UnixLabels.access_permission list -> unit
 val dup : ?cloexec:bool -> UnixLabels.file_descr -> UnixLabels.file_descr
 val dup2 :
  ?cloexec:bool ->
  src:UnixLabels.file_descr -> dst:UnixLabels.file_descr -> unit
 val set_nonblock : UnixLabels.file_descr -> unit
 val clear_nonblock : UnixLabels.file_descr -> unit
 val set_close_on_exec : UnixLabels.file_descr -> unit
 val clear_close_on_exec : UnixLabels.file_descr -> unit
 val mkdir : string -> perm:UnixLabels.file_perm -> unit
 val rmdir : string -> unit
 val chdir : string -> unit
 val getcwd : unit -> string
 val chroot : string -> unit
 type dir_handle = Unix.dir_handle
 val opendir : string -> UnixLabels.dir_handle
 val readdir : UnixLabels.dir_handle -> string
 val rewinddir : UnixLabels.dir_handle -> unit
 val closedir : UnixLabels.dir_handle -> unit
 val pipe :
  ?cloexec:bool -> unit -> UnixLabels.file_descr * UnixLabels.file_descr
 val mkfifo : string -> perm:UnixLabels.file_perm -> unit
 val create_process :
  prog:string ->
  args:string array ->
  stdin:UnixLabels.file_descr ->
  stdout:UnixLabels.file_descr -> stderr:UnixLabels.file_descr -> int
 val create_process_env :
  prog:string ->
  args:string array ->
  env:string array ->
  stdin:UnixLabels.file_descr ->
  stdout:UnixLabels.file_descr -> stderr:UnixLabels.file_descr -> int
 val open_process_in : string -> Stdlib.in_channel
 val open_process_out : string -> Stdlib.out_channel
 val open_process : string -> Stdlib.in_channel * Stdlib.out_channel
 val open_process_full :
  string ->
  env:string array ->
  Stdlib.in_channel * Stdlib.out_channel * Stdlib.in_channel
 val open_process_args_in : string -> string array -> Stdlib.in_channel
 val open_process_args_out : string -> string array -> Stdlib.out_channel
 val open_process_args :
  string -> string array -> Stdlib.in_channel * Stdlib.out_channel
 val open_process_args_full :
  string ->
  string array ->
  string array ->
  Stdlib.in_channel * Stdlib.out_channel * Stdlib.in_channel
 val process_in_pid : Stdlib.in_channel -> int
 val process_out_pid : Stdlib.out_channel -> int
 val process_pid : Stdlib.in_channel * Stdlib.out_channel -> int
 val process_full_pid :
  Stdlib.in_channel * Stdlib.out_channel * Stdlib.in_channel -> int
 val close_process_in : Stdlib.in_channel -> UnixLabels.process_status
 val close_process_out : Stdlib.out_channel -> UnixLabels.process_status
 val close_process :
  Stdlib.in_channel * Stdlib.out_channel -> UnixLabels.process_status
 val close_process_full :
  Stdlib.in_channel * Stdlib.out_channel * Stdlib.in_channel ->
  UnixLabels.process_status
 val symlink : ?to_dir:bool -> src:string -> dst:string -> unit
 val has_symlink : unit -> bool
 val readlink : string -> string
 val select :
  read:UnixLabels.file_descr list ->
  write:UnixLabels.file_descr list ->
  except:UnixLabels.file_descr list ->
  timeout:float ->
  UnixLabels.file_descr list * UnixLabels.file_descr list *
  UnixLabels.file_descr list
 type lock_command =
  Unix.lock_command =
   F_ULOCK
  | F_LOCK
  | F_TLOCK
  | F_TEST
  | F_RLOCK
  | F_TRLOCK
 val lockf :
  UnixLabels.file_descr -> mode:UnixLabels.lock_command -> len:int -> unit
 val kill : pid:int -> signal:int -> unit
 type sigprocmask_command =
  Unix.sigprocmask_command =
   SIG_SETMASK
  | SIG_BLOCK
  | SIG_UNBLOCK
 val sigprocmask :
  mode:UnixLabels.sigprocmask_command -> int list -> int list
 val sigpending : unit -> int list
 val sigsuspend : int list -> unit
 val pause : unit -> unit
 type process_times =
  Unix.process_times = {
  tms_utime : float;
  tms_stime : float;
  tms_cutime : float;
  tms_cstime : float;
 }
 type tm =
  Unix.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 -> UnixLabels.tm
 val localtime : float -> UnixLabels.tm
 val mktime : UnixLabels.tm -> float * UnixLabels.tm
 val alarm : int -> int
 val sleep : int -> unit
 val sleepf : float -> unit
 val times : unit -> UnixLabels.process_times
 val utimes : string -> access:float -> modif:float -> unit
 type interval_timer =
  Unix.interval_timer =
   ITIMER_REAL
  | ITIMER_VIRTUAL
  | ITIMER_PROF
 type interval_timer_status =
  Unix.interval_timer_status = {
  it_interval : float;
  it_value : float;
 }
 val getitimer :
  UnixLabels.interval_timer -> UnixLabels.interval_timer_status
 val setitimer :
  UnixLabels.interval_timer ->
  UnixLabels.interval_timer_status -> UnixLabels.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 =
  Unix.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 =
  Unix.group_entry = {
  gr_name : string;
  gr_passwd : string;
  gr_gid : int;
  gr_mem : string array;
 }
 val getlogin : unit -> string
 val getpwnam : string -> UnixLabels.passwd_entry
 val getgrnam : string -> UnixLabels.group_entry
 val getpwuid : int -> UnixLabels.passwd_entry
 val getgrgid : int -> UnixLabels.group_entry
 type inet_addr = Unix.inet_addr
 val inet_addr_of_string : string -> UnixLabels.inet_addr
 val string_of_inet_addr : UnixLabels.inet_addr -> string
 val inet_addr_any : UnixLabels.inet_addr
 val inet_addr_loopback : UnixLabels.inet_addr
 val inet6_addr_any : UnixLabels.inet_addr
 val inet6_addr_loopback : UnixLabels.inet_addr
 val is_inet6_addr : UnixLabels.inet_addr -> bool
 type socket_domain = Unix.socket_domain = PF_UNIX | PF_INET | PF_INET6
 type socket_type =
  Unix.socket_type =
   SOCK_STREAM
  | SOCK_DGRAM
  | SOCK_RAW
  | SOCK_SEQPACKET
 type sockaddr =
  Unix.sockaddr =
   ADDR_UNIX of string
  | ADDR_INET of UnixLabels.inet_addr * int
 val socket :
  ?cloexec:bool ->
  domain:UnixLabels.socket_domain ->
  kind:UnixLabels.socket_type -> protocol:int -> UnixLabels.file_descr
 val domain_of_sockaddr : UnixLabels.sockaddr -> UnixLabels.socket_domain
 val socketpair :
  ?cloexec:bool ->
  domain:UnixLabels.socket_domain ->
  kind:UnixLabels.socket_type ->
  protocol:int -> UnixLabels.file_descr * UnixLabels.file_descr
 val accept :
  ?cloexec:bool ->
  UnixLabels.file_descr -> UnixLabels.file_descr * UnixLabels.sockaddr
 val bind : UnixLabels.file_descr -> addr:UnixLabels.sockaddr -> unit
 val connect : UnixLabels.file_descr -> addr:UnixLabels.sockaddr -> unit
 val listen : UnixLabels.file_descr -> max:int -> unit
 type shutdown_command =
  Unix.shutdown_command =
   SHUTDOWN_RECEIVE
  | SHUTDOWN_SEND
  | SHUTDOWN_ALL
 val shutdown :
  UnixLabels.file_descr -> mode:UnixLabels.shutdown_command -> unit
 val getsockname : UnixLabels.file_descr -> UnixLabels.sockaddr
 val getpeername : UnixLabels.file_descr -> UnixLabels.sockaddr
 type msg_flag = Unix.msg_flag = MSG_OOB | MSG_DONTROUTE | MSG_PEEK
 val recv :
  UnixLabels.file_descr ->
  buf:bytes -> pos:int -> len:int -> mode:UnixLabels.msg_flag list -> int
 val recvfrom :
  UnixLabels.file_descr ->
  buf:bytes ->
  pos:int ->
  len:int -> mode:UnixLabels.msg_flag list -> int * UnixLabels.sockaddr
 val send :
  UnixLabels.file_descr ->
  buf:bytes -> pos:int -> len:int -> mode:UnixLabels.msg_flag list -> int
 val send_substring :
  UnixLabels.file_descr ->
  buf:string -> pos:int -> len:int -> mode:UnixLabels.msg_flag list -> int
 val sendto :
  UnixLabels.file_descr ->
  buf:bytes ->
  pos:int ->
  len:int ->
  mode:UnixLabels.msg_flag list -> addr:UnixLabels.sockaddr -> int
 val sendto_substring :
  UnixLabels.file_descr ->
  buf:string ->
  pos:int ->
  len:int -> mode:UnixLabels.msg_flag list -> UnixLabels.sockaddr -> int
 type socket_bool_option =
  Unix.socket_bool_option =
   SO_DEBUG
  | SO_BROADCAST
  | SO_REUSEADDR
  | SO_KEEPALIVE
  | SO_DONTROUTE
  | SO_OOBINLINE
  | SO_ACCEPTCONN
  | TCP_NODELAY
  | IPV6_ONLY
  | SO_REUSEPORT
 type socket_int_option =
  Unix.socket_int_option =
   SO_SNDBUF
  | SO_RCVBUF
  | SO_ERROR
  | SO_TYPE
  | SO_RCVLOWAT
  | SO_SNDLOWAT
 type socket_optint_option = Unix.socket_optint_option = SO_LINGER
 type socket_float_option =
  Unix.socket_float_option =
   SO_RCVTIMEO
  | SO_SNDTIMEO
 val getsockopt :
  UnixLabels.file_descr -> UnixLabels.socket_bool_option -> bool
 val setsockopt :
  UnixLabels.file_descr -> UnixLabels.socket_bool_option -> bool -> unit
 val getsockopt_int :
  UnixLabels.file_descr -> UnixLabels.socket_int_option -> int
 val setsockopt_int :
  UnixLabels.file_descr -> UnixLabels.socket_int_option -> int -> unit
 val getsockopt_optint :
  UnixLabels.file_descr -> UnixLabels.socket_optint_option -> int option
 val setsockopt_optint :
  UnixLabels.file_descr ->
  UnixLabels.socket_optint_option -> int option -> unit
 val getsockopt_float :
  UnixLabels.file_descr -> UnixLabels.socket_float_option -> float
 val setsockopt_float :
  UnixLabels.file_descr -> UnixLabels.socket_float_option -> float -> unit
 val getsockopt_error : UnixLabels.file_descr -> UnixLabels.error option
 val open_connection :
  UnixLabels.sockaddr -> Stdlib.in_channel * Stdlib.out_channel
 val shutdown_connection : Stdlib.in_channel -> unit
 val establish_server :
  (Stdlib.in_channel -> Stdlib.out_channel -> unit) ->
  addr:UnixLabels.sockaddr -> unit
 type host_entry =
  Unix.host_entry = {
  h_name : string;
  h_aliases : string array;
  h_addrtype : UnixLabels.socket_domain;
  h_addr_list : UnixLabels.inet_addr array;
 }
 type protocol_entry =
  Unix.protocol_entry = {
  p_name : string;
  p_aliases : string array;
  p_proto : int;
 }
 type service_entry =
  Unix.service_entry = {
  s_name : string;
  s_aliases : string array;
  s_port : int;
  s_proto : string;
 }
 val gethostname : unit -> string
 val gethostbyname : string -> UnixLabels.host_entry
 val gethostbyaddr : UnixLabels.inet_addr -> UnixLabels.host_entry
 val getprotobyname : string -> UnixLabels.protocol_entry
 val getprotobynumber : int -> UnixLabels.protocol_entry
 val getservbyname : string -> protocol:string -> UnixLabels.service_entry
 val getservbyport : int -> protocol:string -> UnixLabels.service_entry
 type addr_info =
  Unix.addr_info = {
  ai_family : UnixLabels.socket_domain;
  ai_socktype : UnixLabels.socket_type;
  ai_protocol : int;
  ai_addr : UnixLabels.sockaddr;
  ai_canonname : string;
 }
 type getaddrinfo_option =
  Unix.getaddrinfo_option =
   AI_FAMILY of UnixLabels.socket_domain
  | AI_SOCKTYPE of UnixLabels.socket_type
  | AI_PROTOCOL of int
  | AI_NUMERICHOST
  | AI_CANONNAME
  | AI_PASSIVE
 val getaddrinfo :
  string ->
  string -> UnixLabels.getaddrinfo_option list -> UnixLabels.addr_info list
 type name_info =
  Unix.name_info = {
  ni_hostname : string;
  ni_service : string;
 }
 type getnameinfo_option =
  Unix.getnameinfo_option =
   NI_NOFQDN
  | NI_NUMERICHOST
  | NI_NAMEREQD
  | NI_NUMERICSERV
  | NI_DGRAM
 val getnameinfo :
  UnixLabels.sockaddr ->
  UnixLabels.getnameinfo_option list -> UnixLabels.name_info
 type terminal_io =
  Unix.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 : UnixLabels.file_descr -> UnixLabels.terminal_io
 type setattr_when = Unix.setattr_when = TCSANOW | TCSADRAIN | TCSAFLUSH
 val tcsetattr :
  UnixLabels.file_descr ->
  mode:UnixLabels.setattr_when -> UnixLabels.terminal_io -> unit
 val tcsendbreak : UnixLabels.file_descr -> duration:int -> unit
 val tcdrain : UnixLabels.file_descr -> unit
 type flush_queue = Unix.flush_queue = TCIFLUSH | TCOFLUSH | TCIOFLUSH
 val tcflush : UnixLabels.file_descr -> mode:UnixLabels.flush_queue -> unit
 type flow_action = Unix.flow_action = TCOOFF | TCOON | TCIOFF | TCION
 val tcflow : UnixLabels.file_descr -> mode:UnixLabels.flow_action -> unit
 val setsid : unit -> int
end

AltStyle によって変換されたページ (->オリジナル) /