Szukaj…


Uwagi

W tej sekcji omówiono, czym jest ocaml i dlaczego deweloper może chcieć go użyć.

Powinien również wymieniać wszelkie duże tematy w obrębie ocaml i zawierać linki do powiązanych tematów. Ponieważ Dokumentacja dla ocaml jest nowa, konieczne może być utworzenie początkowych wersji tych pokrewnych tematów.

Instalacja lub konfiguracja

Instalowanie OPAM

OPAM jest menedżerem pakietów dla OCaml. Z łatwością buduje i zarządza wersjami kompilatora i bibliotek OCaml.

Najłatwiejszym sposobem zainstalowania OPAM w systemie operacyjnym jest użycie menedżera pakietów dla systemu. np. apt-get, yum lub homebrew.

Instrukcje instalacji Mac OSX

Zaktualizuj formuły homebrew i zainstaluj OPAM.

brew update
brew install opam

Instrukcje instalacji Ubuntu

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

Kompilacja ze źródła

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

Inicjowanie OPAM

Po zainstalowaniu OPAM uruchom opam init i postępuj zgodnie z instrukcjami.

Po zakończeniu powinieneś być w stanie uruchomić interpreter OCaml ze swojej powłoki.

$ ocaml
        OCaml version 4.03.0

#

Twój pierwszy program w OCaml

Teraz, gdy dystrybucja OCaml jest dostępna na twoim ulubionym systemie operacyjnym, możemy stworzyć twój pierwszy program w OCaml: Hello World!

Mamy różne sposoby na uruchomienie programu OCaml.

REPL (najwyższy poziom)

Możesz wykonać swój kod interaktywnie z najwyższym poziomem . Z Toplevel OCaml, można pisać i wykonywać kod SML, jako powłoki UNIX. Następnie najwyższy poziom natychmiast sprawdza typ kodu. Możesz więc szybko i łatwo przetestować niektóre części kodu bez kompilacji i wykonywania.

Możesz uruchomić najwyższy poziom za pomocą polecenia ocaml . Następnie możesz napisać zdanie OCaml zakończone ;; który jest oceniany natychmiast. Najwyższy poziom wyświetla typ i wartość wyrażenia zaraz po:

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

Możliwe jest również, aby uruchomić Toplevel na pliku. Możesz zobaczyć to wyjaśnienie na ten temat.

Aby ułatwić wejście w Toplevel, można użyć narzędzia takie jak ledit lub rlwrap która zapewnia pewne cechy (np historii wejściowego):

 $ ledit ocaml

 $ rlwrap ocaml

Kompilacja do kodu bajtowego

Mamy dwa różne kompilatory, jeden kompilujący do kodu bajtowego, a drugi kompilujący do kodu natywnego. Pierwszy jest taki sam, jak kod bajtowy maszyny wirtualnej Java. Tak więc kod bajtowy jest mniej wydajny, ale bardziej przenośny.

Mamy kilka plików rozszerzeń używanych przez kompilatory OCaml:

rozbudowa definicja
.ml Kod źródłowy (jak .c C)
.mli Interfejs (jako .h w C)
.cmo Kod źródłowy skompilowany przez ocamlc w ocamlc bajtowym
.cmi Kod interfejsu skompilowany przez ocamlc
.cmx i .o Kod źródłowy skompilowany przez ocamlopt w natywnym kodzie
.cma Biblioteka (wiadro niektórych *.cmo ) w *.cmo bajtowym
.cmxa i .a Biblioteka w natywnym kodzie
.cmxs Biblioteka w natywnym kodzie (ładowanie dynamiczne)

Kompilator kodu bajtowego jest ocamlc .

Masz różne wspólne opcje:

  • -c : aby skompilować plik źródłowy bez procesu łączenia (w celu utworzenia pliku wykonywalnego). Tak więc polecenie ocaml -c foo.ml tworzy plik .cmo . W przeciwieństwie do C, w którym plik nagłówkowy nie musi być kompilowany, w OCaml konieczne jest skompilowanie pliku .mli : ocaml -c foo.mli .

Najpierw musisz skompilować interfejs. Po skompilowaniu pliku źródłowego OCaml próbuje sprawdzić, czy implementacja pasuje do interfejsu.

Plik .mli nie jest obowiązkowy. Jeśli skompilujesz plik .ml bez pliku .mli , OCaml automatycznie .cmi plik .cmi .

  • -o : aby skompilować niektóre pliki .cmo do pliku wykonywalnego. Na przykład: ocamlc -o program foo.cmo bar.cmo . Pliki te muszą być uporządkowane według zależności, dla których pierwszy plik nie ma zależności.

  • -I : wskazuje inny katalog, w którym kompilator może znaleźć niezbędne pliki do kompilacji (takie jak interfejs lub kod źródłowy). Jest taki sam jak -I z kompilatora C.

Mamy wiele innych opcji. Więcej informacji można znaleźć w instrukcji .

hello.ml teraz napisać hello.ml i skompilować ten plik za pomocą ocamlc -o hello hello.ml aby utworzyć program do kodu bajtowego :

let () = print_endline "Hello World!"

let () = ... jest pierwszym wpisem twojego programu (podobnie jak main w C). Następnie używamy funkcji print_endline (dostarczonej przez bibliotekę standardową) z argumentem "Hello World!" aby wydrukować Hello Worlds z nową linią w standardowym wyjściu.

Po kompilacji masz plik .cmo i .cmi automatycznie generowane przez kompilator i program hello . Możesz otworzyć swój program, aw górnej części tego pliku możesz zobaczyć:

#!/usr/local/bin/ocamlrun

Oznacza to, że Twój program potrzebuje programu ocamlrun (dostarczonego przez dystrybucję) do wykonania kodu bajtowego (takiego jak JVM).

Kompilacja do kodu natywnego

Mamy inny kompilator, który wytwarza kod macierzysty. Kompilator to: ocamlopt . Jednak wynikowy plik wykonywalny nie może działać na większości innych architektur.

ocamlopt używa tych samych opcji co ocamlc dzięki czemu można wykonać ocamlopt -o hello hello.ml . Następnie zobaczysz plik .cmx i .o .

Wreszcie z programu kodu bajtowego / kodu rodzimego możesz wykonać:

$ ./hello
Hello World!
$

Instalacja w systemie Windows (natywna)

Przesłanka

Ta instrukcja pokazuje procedurę instalacji natywnych plików binarnych OCaml w Windows. Jeśli twoim systemem operacyjnym jest Windows 10 (Insider Preview) build 14316 lub nowsza, możesz także zainstalować OCaml poprzez Bash na Ubuntu w Windows . W takim przypadku postępuj zgodnie z instrukcjami, aby zainstalować OCaml na Ubuntu.

Zainstaluj OCaml i Opam

Pobierz oficjalną dystrybucję OCaml . Zawiera zarówno kompilatory OCaml, jak i menedżera pakietów Opam. Załóżmy, że zainstalowałeś oprogramowanie w C:/OCaml . Aby mieć pewność, że poprawnie zainstalowałeś OCaml otwórz cmd.exe i wpisz ocaml .

Jeśli zobaczysz komunikat 'ocaml' is not recognized as an internal or external command, operable program or batch file , musisz dodać C:/OCaml/bin do ścieżki (Zmienna środowiskowa).

Dodaj binaria OCaml do ścieżki

w Control Panel > System and Security > System > Advanced system settings (on the left) > Environment Variables a następnie wybierz Path na karcie System Variable , a następnie Edit .

Dodaj C:/OCaml/bin; do listy.

Zainstaluj Cygwin

Bez Cygwina nie możesz używać Opama. W rzeczywistości, jeśli spróbujesz otworzyć Opam, wpisując opam w cmd.exe , pojawi się komunikat: Fatal error: exception Unix.Unix_error(20, "create_process", "cygcheck") .

Pobierz Cygwin i uruchom instalator. Pamiętaj, aby sprawdzić następujące pakiety:

  • automake
  • diffutils
  • libreadline
  • robić
  • m4
  • mingw64-x86_64-gcc-core
  • mingw64-x86_64-gmp
  • mingw64-x86_64-openssl
  • mingw64-x86_64-pkg-config
  • mingw64-x86_64-sqlite3
  • łata
  • rlwrap
  • rozsunąć suwak
  • wget

Załóżmy, że masz zainstalowane oprogramowanie w C:/cygwin ( C:/cygwin64 dla wersji 64-bitowej). Otwórz cmd i wpisz wget (lub jeden z plików wykonywalnych obecnych w C:/cygwin/bin ), aby sprawdzić, czy możesz użyć plików wykonywalnych Cygwin. Jeśli plik wykonywalny nie chce się otworzyć, dodaj C:/cygwin/bin do swojej ścieżki (zmienna środowiskowa).

Skonfiguruj Opam

Otwórz cmd.exe i wpisz opam init aby skonfigurować Opam.

Następnie zainstaluj ocamlfind (część kompilatora OCaml) przy pomocy

opam install ocamlfind
opam config env

Sprawdź, czy ocamlfind jest zainstalowany, wpisując go w cmd.exe .

Polecenie opam config env służy do dodawania katalogu wykonywalnego opam do ścieżki środowiska. Jeśli po wylogowaniu nie możesz już uzyskać ocamlfind do ocamlfind , możesz ręcznie dodać go, dodając do ścieżki następujący wiersz: C:/Users/<your user>/Documents/.opam/system/bin/ .

Instalowanie pakietów

Pakiety są instalowane przez Opam za pomocą polecenia opam install xyz gdzie xyz to nazwa pakietu.

Zainstaluj UTop

Spróbuj uruchomić polecenie opam install utop . Jeśli nie masz żadnych błędów, wpisanie utop otworzy plik wykonywalny.

Jeśli zobaczysz komunikat

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

musisz ręcznie zainstalować pojedyncze pakiety. Spróbuj ponownie wpisać:

opam install zed
opam install lambda-term
opam install utop

Zarówno lambda-term i utop mogą nie zostać zainstalowane. Zobacz sekcję Rozwiązywanie problemów.

Instalowanie rdzenia

Możesz zainstalować pakiet core z opam install core . W 64-bitowej wersji Windows (i 64-bitowej wersji Cygwin) zobaczysz następujący błąd:

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

Rozwiązywanie problemów: nie można utworzyć zwykłego pliku

Jeśli pakiet o nazwie xyz.10.1 nie zostanie zainstalowany (gdzie xyz to nazwa pakietu, a 10.1 jego wersja) z następującym komunikatem:

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

Musisz przejść do tego katalogu:

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

i usuń plik xyz.10.1.install .

Rozwiązywanie problemów: nie można załadować biblioteki współdzielonej

Jeśli spróbujesz otworzyć pakiet Opama (np .: utop ) i zobaczysz ten błąd:

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

Uruchom ponownie opam config env i spróbuj ponownie otworzyć plik wykonywalny.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow