Buscar..


Observaciones

Esta sección proporciona una descripción general de qué es ocaml y por qué un desarrollador puede querer usarlo.

También debe mencionar cualquier tema grande dentro de ocaml, y vincular a los temas relacionados. Dado que la Documentación para ocaml es nueva, es posible que deba crear versiones iniciales de los temas relacionados.

Instalación o configuración

Instalando OPAM

OPAM es un gestor de paquetes para OCaml. Construye y administra las versiones del compilador y las bibliotecas OCaml para usted fácilmente.

La forma más fácil de instalar OPAM en su sistema operativo es usar un administrador de paquetes para su sistema. por ejemplo, apt-get, yum o homebrew.

Instrucciones de instalación de Mac OSX

Actualice las fórmulas caseras e instale OPAM.

brew update
brew install opam

Instrucciones de instalación de Ubuntu

add-apt-repository ppa:avsm/ppa
apt-get update
apt-get install ocaml opam

Compilando desde la fuente

wget http://caml.inria.fr/pub/distrib/ocaml-4.03/ocaml-4.03.0.tar.gz
tar xf ocaml-4.03.0.tar.gz
cd ocaml-4.03.0
./configure -prefix installation_path
make world.opt
make install

Inicializando OPAM

Una vez que haya instalado OPAM, ejecute opam init y siga las instrucciones.

Una vez hecho esto, debería poder ejecutar el intérprete OCaml desde su shell.

$ ocaml
        OCaml version 4.03.0

#

Tu primer programa en OCaml

Ahora que la distribución de OCaml está disponible en su sistema operativo favorito, podemos crear su primer programa en OCaml: ¡Hello World!

Tenemos diferentes formas de lanzar un programa OCaml.

El REPL (nivel superior)

Puede ejecutar su código de forma interactiva con el nivel superior . Con el nivel básico de OCaml, puede escribir y ejecutar código OCaml, como un shell de UNIX. Luego, el nivel superior verifica el tipo de su código inmediatamente. Por lo tanto, puede probar rápida y fácilmente algunas partes del código sin compilación ni ejecución.

Puede iniciar el nivel ocaml con el comando ocaml . Luego, puedes escribir una oración OCaml terminada por ;; que se evalúa de inmediato. El nivel superior muestra el tipo y el valor de su expresión justo después de:

# "Hello Worlds!";;
- : string = "Hello Worlds!"

También es posible iniciar el nivel superior en su archivo. Puedes ver esta explicación sobre eso.

Para facilitar su entrada en el nivel superior , puede usar una herramienta como ledit o rlwrap que proporciona algunas características (como el historial de entrada):

 $ ledit ocaml

 $ rlwrap ocaml

Recopilación al bytecode

Tenemos dos compiladores diferentes, uno que compila a bytecode y el otro que compila a código nativo. El primero es el mismo que el código de bytes de la máquina virtual de Java. Entonces, el bytecode es menos eficiente pero más portátil.

Tenemos algunos archivos de extensiones utilizados por los compiladores OCaml:

extensión definición
.ml El código fuente (como .c en C)
.mli La interfaz (como .h en C)
.cmo Código fuente compilado por ocamlc en bytecode
.cmi Código de interfaz compilado por ocamlc
.cmx y .o Código fuente compilado por ocamlopt en código nativo
.cma Biblioteca (cubo de algunos *.cmo ) en bytecode
.cmxa y .a Biblioteca en código nativo
.cmxs Biblioteca en código nativo (para cargar dinámicamente)

El compilador de bytecode es ocamlc .

Tienes diferentes opciones comunes:

  • -c : para compilar un archivo fuente sin el proceso de vinculación (para producir un ejecutable). Entonces, el comando ocaml -c foo.ml produce un archivo .cmo . A diferencia de C, en el que no es necesario compilar el archivo de .mli en OCaml es necesario compilar el archivo ocaml -c foo.mli : ocaml -c foo.mli .

Necesitas compilar la interfaz primero. Después de compilar el archivo fuente, OCaml intenta verificar que la implementación coincida con la interfaz.

El archivo .mli no es obligatorio. Si compila un archivo .ml sin un archivo .mli , OCaml producirá un archivo .cmi automáticamente.

  • -o : para compilar algunos archivos .cmo a un ejecutable. Por ejemplo: ocamlc -o program foo.cmo bar.cmo . Estos archivos deben estar ordenados por las dependencias para las cuales el primer archivo no tiene dependencia.

  • -I : para indicar otro directorio donde el compilador puede encontrar los archivos necesarios para la compilación (como la interfaz o el código fuente). Es lo mismo que el -I de un compilador de C.

Tenemos muchas otras opciones. Puedes ver el manual para más información.

Entonces, puede escribir el hello.ml ahora, y compilar este archivo con ocamlc -o hello hello.ml para producir un programa de bytecode :

let () = print_endline "Hello World!"

El let () = ... es la primera entrada de su programa (como el main en C). Después, usamos la función print_endline (proporcionada por la biblioteca estándar) con el argumento "Hello World!" para imprimir Hello Worlds con una nueva línea en la salida estándar.

Después de la compilación, tiene el archivo .cmo y el archivo .cmi producidos automáticamente por el compilador y su programa hello . Puedes abrir tu programa, y ​​en la parte superior de este archivo, puedes ver:

#!/usr/local/bin/ocamlrun

Eso significa que su programa necesita el programa ocamlrun (proporcionado por la distribución) para ejecutar el bytecode (como la JVM).

Compilación al código nativo.

Tenemos otro compilador que produce código nativo. El compilador es: ocamlopt . Sin embargo, el ejecutable resultante no puede funcionar en la mayoría de las otras arquitecturas.

ocamlopt usa las mismas opciones que ocamlc para que pueda ejecutar ocamlopt -o hello hello.ml Después, puedes ver un .cmx y un archivo .o .

Finalmente, desde su programa de código de bytes / código nativo, puede ejecutar:

$ ./hello
Hello World!
$

Instalación en Windows (nativo)

Premisa

Esta instrucción muestra un procedimiento para instalar binarios nativos de OCaml en Windows. Si su sistema operativo es Windows 10 (Insider Preview) build 14316 o posterior, también puede instalar OCaml a través de Bash en Ubuntu en Windows . En este caso, siga las instrucciones para instalar OCaml en Ubuntu.

Instala OCaml y Opam

Descargar la distribución oficial de OCaml . Contiene tanto compiladores OCaml como gestor de paquetes Opam. Supongamos que ha instalado el software en C:/OCaml . Para asegurarse de haber instalado correctamente OCaml, abra cmd.exe y escriba ocaml .

Si ve el mensaje, 'ocaml' is not recognized as an internal or external command, operable program or batch file , debe agregar C:/OCaml/bin a su ruta (variable de entorno).

Añadir binarios OCaml a la ruta

en Control Panel > System and Security > System > Advanced system settings (on the left) > Environment Variables y luego seleccione Path en la pestaña System Variable , luego Edit .

Añadir C:/OCaml/bin; a la lista.

Instalar cygwin

Sin Cygwin no puedes usar Opam. De hecho, si intenta abrir Opam escribiendo opam en cmd.exe se mostrará un mensaje: Fatal error: exception Unix.Unix_error(20, "create_process", "cygcheck") .

Descarga Cygwin e inicia el instalador. Asegúrese de revisar los siguientes paquetes:

  • automake
  • difutiles
  • libreadline
  • hacer
  • m4
  • mingw64-x86_64-gcc-core
  • mingw64-x86_64-gmp
  • mingw64-x86_64-openssl
  • mingw64-x86_64-pkg-config
  • mingw64-x86_64-sqlite3
  • parche
  • envoltura
  • abrir la cremallera
  • wget

Supongamos que ha instalado el software en C:/cygwin ( C:/cygwin64 para la versión de 64 bits). Abra cmd y escriba wget (o uno de los ejecutables presentes en C:/cygwin/bin ) para verificar si puede usar los ejecutables de Cygwin. Si el archivo ejecutable no se abre, agregue C:/cygwin/bin a su ruta (Variable de entorno).

Configurar Opam

Abra cmd.exe y escriba opam init para configurar Opam.

Luego instale ocamlfind (parte del compilador OCaml) con

opam install ocamlfind
opam config env

Compruebe si ocamlfind está instalado escribiéndolo en cmd.exe .

El comando opam config env se usa para agregar el directorio de ejecutables de opam a la ruta del entorno. Si después de cerrar la sesión ya no puede alcanzar ocamlfind , puede agregarlo manualmente agregando a la ruta la siguiente línea: C:/Users/<your user>/Documents/.opam/system/bin/ .

Instalando paquetes

Los paquetes se instalan a través de Opam con el comando opam install xyz donde xyz es el nombre del paquete.

Instalar UTop

Intente ejecutar el comando opam install utop . Si no tiene errores, al escribir utop se abrirá el ejecutable.

Si ves el mensaje

[ERROR] The compilation of zed failed at "ocaml setup.ml -build".

Tienes que instalar manualmente los paquetes individuales. Intente de nuevo escribiendo:

opam install zed
opam install lambda-term
opam install utop

Tanto lambda-term como utop pueden no instalarse. Ver la sección de resolución de problemas.

Instalación de Core

Puede instalar el paquete core con opam install core . En la versión de Windows de 64 bits (y 64 bits de Cygwin) verá el siguiente error:

[ERROR] core is not available because your system doesn't comply with os != "win32" & ocaml-version = "4.02.3".

Solucionar problemas: no se puede crear un archivo normal

Si el paquete con el nombre xyz.10.1 no se instala (donde xyz es el nombre del paquete y 10.1 su versión) con el siguiente mensaje:

install: cannot create regular file '/cygdrive/c/Users/<your user>/Documents/.opam/system/bin/<something>': File exists

Tienes que ir en este directorio:

C:\Users\<your user>\Documents\.opam\repo\default\packages\<xyz>\<xyz.10.1>\files 

y elimine el archivo xyz.10.1.install .

Solución de problemas: no se puede cargar la biblioteca compartida

Si intenta abrir algún paquete de Opam (por ejemplo: utop ) y ve este error:

Fatal error: cannot load shared library dlllwt-unix_stubs
Reason: The specified module could not be found.

Ejecute opam config env nuevamente e intente volver a abrir el ejecutable.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow