0

Im trying to use the Ocaml Str library in Ocaml v5.0 (for regexp) by importing using "open Str" but I keep getting this error

"Module `Str' is unavailable"

followed by this alert

" OCaml's lib directory layout changed in 5.0. The str subdirectory has been automatically added to the search path, but you should add -I +str to the command-line to silence this alert (e.g. by adding str to the list of libraries in your dune file, or adding use_str to your _tags file for ocamlbuild, or using -package str for ocamlfind). "

I'm new to OCaml, any help would be greatly appreciated.

I've tried putting "add -I +str" into the command line however I got another error. I'm not sure how to add a library to my dune file so I haven't attempted this yet.

Chris
  • 26,361
  • 5
  • 21
  • 42

1 Answers1

1

The Str library is a separate library, and it is not part of the standard library. Moreover, libraries are not imported with open statements in OCaml.

You need to add a libraries stanza to your dune file:

(libraries str)

You can ignore the alert which is meant for previous users of the str library that were relying on the fact that the str library was previously co-located with the standard library.

It is also generally advise to avoid the str library when possible and use one of the other regexp library from opam.

octachron
  • 17,178
  • 2
  • 16
  • 23
  • Further reading with some details on why `str` is being advised against. https://stackoverflow.com/questions/3221067/regular-expressions-in-ocaml – Chris Oct 31 '22 at 06:24