OCaml
Napisz swój pierwszy skrypt OCaml
Szukaj…
Witaj świecie
W tym przykładzie założono, że zainstalowałeś OCaml .
Kompilowanie kodu OCaml
Utwórz nowy plik o nazwie hello.ml , o następującej treści:
print_string "Hello world!\n"
ocamlc to kompilator OCaml. Aby skompilować i uruchomić ten skrypt, uruchom
$ ocamlc -o hello hello.ml
a następnie uruchom wynikowy plik binarny
$ ./hello
Hello world!
Wykonywanie kodu OCaml
Możesz także uruchomić ten skrypt bez kompilowania go w plik binarny. Możesz to zrobić za pomocą ocaml , systemu najwyższego poziomu ocaml, który umożliwia interaktywne korzystanie z OCaml. W swojej powłoce po prostu uruchom
$ ocaml hello.ml
Hello world!
W REPL
Otwórz nową powłokę i wpisz ocaml aby otworzyć system najwyższego poziomu. W sesji możesz wpisać ten sam program:
OCaml version 4.02.1
# print_string "hello world!\n";;
naciśnij klawisz Enter, aby ocenić wyrażenie, i uruchom druk.
hello world!
- : unit = ()
Sukces! Widzimy to wydrukowane hello world! , ale o czym jest - : unit = () ? OCaml nie ma instrukcji, wszystko jest wyrażeniem, które zwraca pewną wpisaną wartość. W tym przypadku print_string jest funkcją, która pobiera string jako dane wejściowe i zwraca unit . Pomyśl o unit jako o typie, który może przyjąć tylko jedną wartość () (zwaną również jednostką) i reprezentuje zakończone obliczenia, które nie zwracają żadnej znaczącej wartości.
W tym przypadku print_string ma również efekt uboczny polegający na umieszczaniu znaków otrzymanych jako dane wejściowe na ekranie, dlatego widzimy pierwszy wiersz.
Aby wyjść z REPL, naciśnij ctrl+D
Jako skrypt uniksowy
Mamy dwa sposoby na utworzenie skryptu OCaml. Pierwszy używa najwyższego poziomu systemu (dostarczonego przez menedżera pakietów, takiego jak apt-get ), a drugi używa najwyższego poziomu dostarczonego przez OPAM .
Użyj najwyższego poziomu systemu
Otwórz swój ulubiony edytor i napisz:
#!/usr/bin/ocaml
print_string "hello worlds!\n";;
Następnie możesz użyć chmod +x your_file.ml i możesz wykonać skrypt za pomocą ./your_file.ml .
Użyj najwyższego poziomu dostarczonego przez OPAM
#!/usr/bin/env ocaml
print_string "hello worlds!\n";;
Duża różnica dotyczy wersji twojego najwyższego poziomu. Rzeczywiście, jeśli skonfigurowałeś OPAM za pomocą określonego przełącznika (takiego jak opam switch 4.03.0 ), skrypt użyje OCaml 4.03.0. Po pierwsze, na przykład w Debian Sid, skrypt użyje OCaml 4.02.3.
Możesz zastąpić shebang przez #!/usr/bin/env utop aby użyć utop zamiast waniliowego najwyższego poziomu.
utop
utop to kolejny najwyższy poziom ocaml poza dystrybucją - oznacza to, że musisz pobrać i zainstalować utop (najprostszym sposobem jest użycie OPAM: opam install utop ). utop ma wiele funkcji, takich jak historyczny, uzupełnianie i interaktywna edycja linii.
Więc jeśli chcesz w łatwy sposób wypróbować niektóre kody ocaml, utop jest najlepszy.
Dlaczego utop a nie ocaml ?
utop i ocaml nie mają dużej różnicy, jeśli chcesz skrypt ocaml jak wyżej. Ale powszechną rzeczą w społeczności OCaml jest użycie utop zamiast ocaml .
W rzeczywistości, ocaml REPL jest zapewniony przez rozkład ocaml. Tak więc REPL śledzi cykl wydawania kompilatora, a jeśli chcesz mieć dodatkowe funkcje, musisz poczekać na kolejną wersję kompilatora. utop , jak wyjaśniliśmy, jest poza dystrybucją, więc cykl wydania nie jest ograniczony przez kompilator, a jeśli chcesz dodatkowej funkcji, bardziej prawdopodobne jest, że spróbujesz wepchnąć tę funkcję do utop niż ocaml :)!
W tym punkcie (i dla funkcji historycznej) większość ludzi w społeczności ocaml woli używać utop niż ocaml .