Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] Big feature wish: IO module
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2003-11-12 (16:35)
From: Oleg Trott <oleg_trott@c...>
Subject: [Caml-list] Big feature wish: IO module
I'm very puzzled why after over 10 years, Caml did not acquire something like 
this ("Modern" languages seem to usually have it: Haskell has "read" and 
"show", e.g.)

(*  =========== module IO ================== *)

module type AnyType = sig type t end

type style = Binary | Caml | S_expr | XML

exception Parse_error
exception Type_error

module type S = 
    type t
    val from_channel: ?style:style -> in_channel -> t
    val from_string   : ?style:style -> string -> t
    val from_buffer  : ?style:style -> string -> int -> t

    val to_channel: ?style:style -> ?detect_sharing:bool -> out_channel -> t 
-> unit
    val to_string: ?style:style -> ?detect_sharing:bool -> t -> string
    val to_buffer: ?style:style -> ?detect_sharing:bool -> t -> string -> 
int->  int

module Make (Any : AnyType) : S with type t = Any.t

(* ======================================== *)    

No explanation is necessary, I hope. IO module should to be type-safe and 
subsume Marshal and IOXML.

This would, of course, require compiler support, since users can not do type 
introspection, even with Camlp4 (I remember reading some sort of 
pre-announcement about adding type introspection to Camlp4. How is that 
coming along?)

BTW, there is a problem with labeled arguments within module signatures, 

Oleg Trott <>

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: