OCaml Handledning
Komma igång med OCaml
Sök…
Anmärkningar
Det här avsnittet ger en översikt över vad ocaml är och varför en utvecklare kanske vill använda den.
Det bör också nämna alla stora ämnen inom ocaml och länka till relaterade ämnen. Eftersom dokumentationen för ocaml är ny kan du behöva skapa initialversioner av relaterade ämnen.
Installation eller installation
Installera OPAM
OPAM är en paketansvarig för OCaml. Det bygger och hanterar kompilatorversioner och OCaml-bibliotek enkelt för dig.
Det enklaste sättet att installera OPAM på ditt operativsystem är att använda en pakethanterare för ditt system. t.ex. apt-get, yum eller homebrew.
Mac OSX installationsinstruktioner
Uppdatera homebrew- formler och installera OPAM.
brew update
brew install opam
Ubuntu installationsinstruktioner
add-apt-repository ppa:avsm/ppa
apt-get update
apt-get install ocaml opam
Kompilering från källan
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
Initierar OPAM
När du har installerat OPAM, kör opam init och följ instruktionerna.
När du är klar bör du kunna köra OCaml-tolk från ditt skal.
$ ocaml
OCaml version 4.03.0
#
Ditt första program i OCaml
Nu när OCaml-distributionen är tillgänglig på ditt favoritoperativsystem kan vi skapa ditt första program i OCaml: Hello World!
Vi har olika sätt att starta ett OCaml-program.
REPL (toppnivå)
Du kan köra din kod interaktivt med toppnivån . Med OCaml- toppnivån kan du skriva och köra OCaml-koden som ett UNIX-skal. Därefter kontrollerar toppnivån typen av din kod omedelbart. Så du kan snabbt och enkelt testa vissa delar av koden utan sammanställning och körning.
Du kan starta toppnivån med kommandot ocaml . Sedan kan du skriva en OCaml- mening som slutade med ;; vilket utvärderas omedelbart. Toppnivån visar typen och värdet på ditt uttryck strax efter:
# "Hello Worlds!";;
- : string = "Hello Worlds!"
Det är också möjligt att starta toppnivån på din fil. Du kan se denna förklaring om det.
För att underlätta din inmatning i toppnivån kan du använda ett verktyg som ledit eller rlwrap som ger vissa funktioner (som inmatningshistorik):
$ ledit ocaml
$ rlwrap ocaml
Sammanställning till bytekoden
Vi har två olika kompilatorer, en som kompilerar till bytkod och den andra som kompilerar till inbyggd kod. Den första är densamma som bytekoden för Java: s virtuella maskin. Så, bytekoden är mindre effektiv men mer bärbar.
Vi har några tilläggsfiler som används av OCaml-kompilatorerna:
| förlängning | definition |
|---|---|
.ml | Källkoden (som .c i C) |
.mli | Gränssnittet (som .h i C) |
.cmo | Källkod sammanställd av ocamlc i bytecode |
.cmi | Gränssnittskod sammanställd av ocamlc |
.cmx och .o | Källkod sammanställd av ocamlopt i inbyggd kod |
.cma | Bibliotek (hink med en del *.cmo ) i bytecode |
.cmxa och .a | Bibliotek med inbyggd kod |
.cmxs | Bibliotek med inbyggd kod (för att ladda dynamik) |
Bytekodkompilatorn är ocamlc .
Du har olika vanliga alternativ:
-
-c: att sammanställa en källfil utan länkprocessen (för att producera en körbar). Så kommandotocaml -c foo.mlproducerar en.cmofil. Till skillnad från C där huvudfilen inte behöver sammanställas, är det nödvändigt i OCaml att sammanställa.mlifilen:ocaml -c foo.mli.
Du måste sammanställa gränssnittet först. När du sammanställer källfilen efteråt försöker OCaml kontrollera att implementeringen matchar gränssnittet.
.mli filen är inte obligatorisk. Om du sammanställer en .ml fil utan en .mli fil kommer OCaml att producera en .cmi fil automatiskt.
-o: att sammanställa vissa.cmofiler till en körbar. Till exempel:ocamlc -o program foo.cmo bar.cmo. Dessa filer måste ordnas efter de beroenden som den första filen inte har något beroende av.-I: för att ange en annan katalog där kompilatorn kan hitta nödvändiga filer för sammanställningen (som gränssnittet eller källkoden). Det är samma sak än-Ifrån en C-kompilator.
Vi har många andra alternativ. Du kan se manualen för mer information.
Så du kan skriva hello.ml nu och kompilera den här filen med ocamlc -o hello hello.ml att producera ett bytecode- program:
let () = print_endline "Hello World!"
let () = ... är det första inlägget i ditt program (som main i C). Efter det använder vi funktionen print_endline (tillhandahålls av standardbiblioteket) med argumentet "Hello World!" för att skriva ut Hello Worlds med en ny linje i standardutgången.
Efter sammanställningen har du .cmo filen och .cmi filen automatiskt producerad av kompilatorn och ditt program hello . Du kan öppna ditt program och längst upp i den här filen kan du se:
#!/usr/local/bin/ocamlrun
Det betyder att ditt program behöver ocamlrun programmet (tillhandahålls av distributionen) för att köra bytekoden (som JVM).
Sammanställning till den ursprungliga koden
Vi har en annan kompilator som producerar inbyggd kod. Kompilatorn är: ocamlopt . Den resulterande körbara kan dock inte fungera på de flesta andra arkitekturer.
ocamlopt använder samma alternativ som ocamlc så att du kan köra ocamlopt -o hello hello.ml . Efter kan du se en .cmx och en .o fil.
Slutligen kan du köra från ditt bytecode / native code-program:
$ ./hello
Hello World!
$
Installation på Windows (infödda)
Premiss
Denna instruktion visar en procedur för att installera ursprungliga OCaml-binärer i Windows. Om ditt operativa system är Windows 10 (Insider Preview) build 14316 eller senare kan du också installera OCaml via Bash på Ubuntu på Windows . Följ i så fall instruktionerna för att installera OCaml på Ubuntu.
Installera OCaml och Opam
Ladda ner OCaml officiell distribution . Den innehåller både OCaml-kompilatorer och Opam-pakethanteraren. Anta att du har installerat programvaran i C:/OCaml . För att vara säker på att du korrekt har installerat OCaml open cmd.exe och skriv ocaml .
Om du ser meddelandet 'ocaml' is not recognized as an internal or external command, operable program or batch file måste du lägga till C:/OCaml/bin till din sökväg (miljövariabel).
Lägg till OCaml-binärer på sökvägen
i Control Panel > System and Security > System > Advanced system settings (on the left) > Environment Variables och välj sedan Path i System Variable flik och sedan Edit .
Lägg till C:/OCaml/bin; till listan.
Installera Cygwin
Utan Cygwin kan du inte använda Opam. I själva verket, om du försöker öppna Opam att skriva opam i cmd.exe visar det ett meddelande: Fatal error: exception Unix.Unix_error(20, "create_process", "cygcheck") .
Ladda ner Cygwin och starta installationsprogrammet. Kontrollera följande paket:
- auto
- diffutils
- libreadline
- göra
- m4
- mingw64-x86_64-gcc-kärna
- mingw64-x86_64-gmp
- mingw64-x86_64-openssl
- mingw64-x86_64-pkg-config
- mingw64-x86_64-sqlite3
- lappa
- rlwrap
- packa upp
- wget
Anta att du har installerat programvaran i C:/cygwin ( C:/cygwin64 för 64 bitars version). Öppna cmd och skriv wget (eller en av de körbara som finns i C:/cygwin/bin ) för att kontrollera om du kan använda Cygwin-körbara filer. Om den körbara inte öppnas lägger du till C:/cygwin/bin till din sökväg (miljövariabel).
Konfigurera Opam
Öppna cmd.exe och skriv opam init att konfigurera Opam.
Installera sedan ocamlfind (del av OCaml-kompilatorn) med
opam install ocamlfind
opam config env
Kontrollera om ocamlfind är installerat genom att skriva det i cmd.exe .
Kommandot opam config env används för att lägga till opam körbara katalog till miljövägen. Om du efter utloggning inte kan nå ocamlfind längre kan du lägga till den manuellt och lägga till sökvägen på följande rad: C:/Users/<your user>/Documents/.opam/system/bin/ .
Installera paket
Paket installeras via Opam med kommandot opam install xyz där xyz är paketets namn.
Installera UTop
Prova att köra kommandot opam install utop . Om du inte har några fel utop att skriva utop .
Om du ser meddelandet
[ERROR] The compilation of zed failed at "ocaml setup.ml -build".
du måste installera enskilda paket manuellt. Försök skriva igen:
opam install zed
opam install lambda-term
opam install utop
Både lambda-term och utop kanske inte installeras. Se felsökning.
Installera Core
Du kan installera core paket med opam install core . I Windows 64bit-version (och 64bit Cygwin) ser du följande fel:
[ERROR] core is not available because your system doesn't comply with os != "win32" & ocaml-version = "4.02.3".
Felsökning: kan inte skapa en vanlig fil
Om paket med namnet xyz.10.1 inte installeras (där xyz är paketets namn och 10.1 dess version) med följande meddelande:
install: cannot create regular file '/cygdrive/c/Users/<your user>/Documents/.opam/system/bin/<something>': File exists
Du måste gå in i den här katalogen:
C:\Users\<your user>\Documents\.opam\repo\default\packages\<xyz>\<xyz.10.1>\files
och ta bort filen xyz.10.1.install .
Felsökning: kan inte ladda delat bibliotek
Om du försöker öppna något Opams paket (t.ex. utop ) och du ser detta fel:
Fatal error: cannot load shared library dlllwt-unix_stubs
Reason: The specified module could not be found.
Kör opam config env igen och försök att öppna den körbara igen.