Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] String.map => Question to the OCaml-team
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: brogoff@s...
Subject: Re: [Caml-list] String.map => Question to the OCaml-team
On Fri, 9 Apr 2004, Fernando Alegre wrote:

> On Fri, Apr 09, 2004 at 03:29:41PM +0200, Jean-Christophe Filliatre wrote:
>
> > Note there is a `for' construct in ocaml:
> >
> > ======================================================================
> > let string_map (f: char -> char) (s: string) : string =
> >   let t = String.copy s in
> >   for i = 0 to String.length s - 1 do t.[i] <- f s.[i] done;
> >   t
> > ======================================================================
> >
> > and this is slightly faster than your implementation (by 10%).
>
> Why not just use String.blit, as provided by the standard library?
>
> Fernando
>
The whole thing would be a lot nicer if there were a String.init

    init : int -> (int -> char) -> string

obviously modeled on Array.init, since the OCaml designers had enough good
sense not to follow Haskell and make strings lists (or provide abominable
built in string -> char list functions). I wonder how usefulthis is in
typical string  manipulation? I guess I find other ways to do things...

It would of course be nice if we had the oft discussed generic polymorphism
so that we could take better advantage of the similarity of strings and arrays
(and bigarrays and hastables and ...) than we can now. Bazaar to Cathedral,
anyone home? :-)

Also, ripping off SML97 Basis Substring makes a lot of sense. Substrings allow
you to write these string traversal algorithms over in a functional style,
which is usually a good thing.

-- Brian

-------------------
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