From: Nicolas C. <war...@fr...> - 2003-12-10 07:08:35
|
> > Handling strings are char or int arrays is very inefficient, and > > Streams are > > not used in the Extlib. > > Please look at Enum modules and try to express your lists , arrays and > > streams as enums, this will make your code a lot more plugable into the > > Extlib. > > Those arrays are lookup tables. Are you certain Enum is faster than > char_map.(x) ? Enum might make sense to use in place of the Streams. Why then don't you use a string ? String.unsafe_get chars x is faster than an array access, due to special array cases (float arrays) that are checked at runtime. But this is an implementation trick, it shouldn't be visible from outside the API. And bounds have to be check ( and specific exception raised ) before accessing the string of course. > Is there a reason Streams shouldn't be used? How about a Stream and > Enum conversion module? Streams are good for what they have been designed for : stream parsers. They shouldn't be used to represent abstract collections of elements : enum have been designed for that , have a more rich api ( with some nice features such as clone ) and an optimized implementation. Extlib provide a lot of functions to work withs enums , an Enum.to_stream and of_stream could be added but then every user using enums will have to link also the Stream module.... But it's quite easy to write : let to_stream e = Stream.from (fun _ -> Enum.get e) Nicolas Cannasse |