Loading ...
Sorry, an error occurred while loading the content.

Re: "ocaml_beginners"::[] what limits Sys.max_string_length and can it be increased ?

Expand Messages
  • Francois Berenger
    Gabriel mentioned the rope data structure. That would allow you to create giant strings, I guess. There are several implementations in OCaml.
    Message 1 of 6 , Feb 20, 2013
    • 0 Attachment
      Gabriel mentioned the rope data structure.
      That would allow you to create giant strings, I guess.
      There are several implementations in OCaml.

      https://www.lri.fr/~filliatr/ftp/ocaml/ds/rope.mli.html
      http://batteries.forge.ocamlcore.org/doc.preview:batteries-beta1/html/api/Rope.html

      If that's not enough, then just use a file on disk! :)

      On 02/21/2013 08:52 AM, Sergei Steshenko wrote:
      > Even though my desktop (but not laptop) CPU is capable of running 64
      > bits, I still prefer 32 bit versions of Linux for various practical reasons.
      >
      > Could you shed some light on data representation in OCaml ? AFAIK
      > integers are 31 rather than 32 bits - which according to my (naive ?)
      > understanding should limit things from 4G to 2G. And that would be OK
      > for me.
      >
      > But why 16M ?
      >
      > Thanks,
      > Sergei.
      >
      > ----- Original Message -----
      > > From: Hongbo Zhang hongboz@...
      > <mailto:hongboz%40seas.upenn.edu>>
      > > To: ocaml_beginners@yahoogroups.com
      > <mailto:ocaml_beginners%40yahoogroups.com>
      > > Cc:
      > > Sent: Thursday, February 21, 2013 1:45 AM
      > > Subject: Re: "ocaml_beginners"::[] what limits Sys.max_string_length
      > and can it be increased ?
      > >
      > > Hi Sergei, try 64 bit ocaml. The length limit is due to the data
      > > representation chosen by ocaml.
      > >
      > > On Wed, Feb 20, 2013 at 6:41 PM, Sergei Steshenko
      > > sergstesh@... <mailto:sergstesh%40yahoo.com>>wrote:
      > >
      > >> **
      > >>
      > >>
      > >> Hello,
      > >>
      > >> I've checked Sys.max_string_length:
      > >>
      > >> "
      > >> # Sys.max_string_length;;
      > >> - : int = 16777211
      > >> ".
      > >>
      > >> By my standards it's a small value. For example, in Perl strings can
      > > have
      > >> whatever length - of course, limited by available memory.
      > >>
      > >> Why in OCaml (or in the module) the value is limited by
      > approximately 16M
      > >> and can it be increased ?
      > >>
      > >> Thanks,
      > >> Sergei.
      > >>
      > >>
      > >
      > >
      > >
      > > --
      > > -- Regards, Hongbo
      > >
      > >
      > > [Non-text portions of this message have been removed]
      > >
      > >
      > >
      > > ------------------------------------
      > >
      > > Archives up to December 31, 2011 are also downloadable at
      > > http://www.connettivo.net/cntprojects/ocaml_beginners
      > > The archives of the very official ocaml list (the seniors' one) can
      > be found
      > > at http://caml.inria.fr
      > > Attachments are banned and you're asked to be polite, avoid flames
      > > etc.Yahoo! Groups Links
      > >
      > >
      > >
      >
      >
    • Gabriel Scherer
      Ropes are indeed a reasonable choice for long strings. Another solution is to use Bigarray (
      Message 2 of 6 , Feb 21, 2013
      • 0 Attachment
        Ropes are indeed a reasonable choice for long strings. Another solution is
        to use Bigarray (
        http://caml.inria.fr/pub/docs/manual-ocaml-4.00/libref/Bigarray.html ),
        which supports array of arbitrary size, including arrays of chars. As far
        as I know, however, the library support for using Bigarray as strings is
        presently poor (that would be a worthy contribution to the OCaml
        ecosystem), so you'd have to recode most input/output functions, buffer
        etc., on top of Bigarrays.

        On Thu, Feb 21, 2013 at 3:21 AM, Francois Berenger <berenger@...>wrote:

        > Gabriel mentioned the rope data structure.
        > That would allow you to create giant strings, I guess.
        > There are several implementations in OCaml.
        >
        > https://www.lri.fr/~filliatr/ftp/ocaml/ds/rope.mli.html
        >
        > http://batteries.forge.ocamlcore.org/doc.preview:batteries-beta1/html/api/Rope.html
        >
        > If that's not enough, then just use a file on disk! :)
        >
        > On 02/21/2013 08:52 AM, Sergei Steshenko wrote:
        > > Even though my desktop (but not laptop) CPU is capable of running 64
        > > bits, I still prefer 32 bit versions of Linux for various practical
        > reasons.
        > >
        > > Could you shed some light on data representation in OCaml ? AFAIK
        > > integers are 31 rather than 32 bits - which according to my (naive ?)
        > > understanding should limit things from 4G to 2G. And that would be OK
        > > for me.
        > >
        > > But why 16M ?
        > >
        > > Thanks,
        > > Sergei.
        > >
        > > ----- Original Message -----
        > > > From: Hongbo Zhang hongboz@...
        > > <mailto:hongboz%40seas.upenn.edu>>
        > > > To: ocaml_beginners@yahoogroups.com
        > > <mailto:ocaml_beginners%40yahoogroups.com>
        > > > Cc:
        > > > Sent: Thursday, February 21, 2013 1:45 AM
        > > > Subject: Re: "ocaml_beginners"::[] what limits Sys.max_string_length
        > > and can it be increased ?
        > > >
        > > > Hi Sergei, try 64 bit ocaml. The length limit is due to the data
        > > > representation chosen by ocaml.
        > > >
        > > > On Wed, Feb 20, 2013 at 6:41 PM, Sergei Steshenko
        > > > sergstesh@... <mailto:sergstesh%40yahoo.com>>wrote:
        > > >
        > > >> **
        > > >>
        > > >>
        > > >> Hello,
        > > >>
        > > >> I've checked Sys.max_string_length:
        > > >>
        > > >> "
        > > >> # Sys.max_string_length;;
        > > >> - : int = 16777211
        > > >> ".
        > > >>
        > > >> By my standards it's a small value. For example, in Perl strings can
        > > > have
        > > >> whatever length - of course, limited by available memory.
        > > >>
        > > >> Why in OCaml (or in the module) the value is limited by
        > > approximately 16M
        > > >> and can it be increased ?
        > > >>
        > > >> Thanks,
        > > >> Sergei.
        > > >>
        > > >>
        > > >
        > > >
        > > >
        > > > --
        > > > -- Regards, Hongbo
        > > >
        > > >
        > > > [Non-text portions of this message have been removed]
        > > >
        > > >
        > > >
        > > > ------------------------------------
        > > >
        > > > Archives up to December 31, 2011 are also downloadable at
        > > > http://www.connettivo.net/cntprojects/ocaml_beginners
        > > > The archives of the very official ocaml list (the seniors' one) can
        > > be found
        > > > at http://caml.inria.fr
        > > > Attachments are banned and you're asked to be polite, avoid flames
        > > > etc.Yahoo! Groups Links
        > > >
        > > >
        > > >
        > >
        > >
        >
        >
        >
        > ------------------------------------
        >
        > Archives up to December 31, 2011 are also downloadable at
        > http://www.connettivo.net/cntprojects/ocaml_beginners
        > The archives of the very official ocaml list (the seniors' one) can be
        > found at http://caml.inria.fr
        > Attachments are banned and you're asked to be polite, avoid flames
        > etc.Yahoo! Groups Links
        >
        >
        >
        >


        [Non-text portions of this message have been removed]
      Your message has been successfully submitted and would be delivered to recipients shortly.