Version française
Home     About     Download     Resources     Contact us    
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: -- (:)
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 = 
  sig
    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
  end

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, 
right?

-- 
Oleg Trott <oleg_trott@columbia.edu>

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners