OCaml 튜토리얼
OCaml 시작하기
수색…
비고
이 섹션에서는 ocaml이 무엇인지, 그리고 왜 개발자가 그것을 사용하고 싶어하는지에 대한 개요를 제공합니다.
또한 ocaml 내의 큰 주제를 언급하고 관련 주제에 링크해야합니다. ocaml의 문서는 새로운 문서이기 때문에 관련 주제의 초기 버전을 만들어야 할 수도 있습니다.
설치 또는 설정
OPAM 설치
OPAM 은 OCaml의 패키지 관리자입니다. 컴파일러 버전과 OCaml 라이브러리를 쉽게 빌드하고 관리합니다.
운영 체제에 OPAM을 설치하는 가장 쉬운 방법은 시스템에 패키지 관리자를 사용하는 것입니다. 예 : apt-get, yum 또는 homebrew.
Mac OSX 설치 지침
자작 수식을 업데이트하고 OPAM을 설치하십시오.
brew update
brew install opam
우분투 설치 지침
add-apt-repository ppa:avsm/ppa
apt-get update
apt-get install ocaml opam
소스에서 컴파일
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
OPAM 초기화 중
OPAM이 설치되면 opam init 실행하고 지시 사항을 따르십시오.
일단 쉘에서 OCaml 인터프리터를 실행할 수 있어야합니다.
$ ocaml
OCaml version 4.03.0
#
OCaml의 첫 번째 프로그램
이제 OCaml 배포판을 여러분이 좋아하는 운영체제에서 사용할 수 있으므로 OCaml에서 첫 번째 프로그램 인 Hello World!를 만들 수 있습니다.
우리는 OCaml 프로그램을 시작하는 다양한 방법을 가지고 있습니다.
REPL (최상위 레벨)
최상위 코드와 대화식 으로 코드를 실행할 수 있습니다. OCaml 최상위 레벨을 사용하면 OCaml 코드를 UNIX 쉘로 작성하고 실행할 수 있습니다. 그런 다음 최상위 레벨에서 코드의 유형을 즉시 확인합니다. 따라서 컴파일 및 실행없이 코드의 일부분을 빠르고 쉽게 테스트 할 수 있습니다.
ocaml 명령으로 최상위 레벨 을 시작할 수 있습니다. 그런 다음 OCaml 문장 을 ;; 끝낼 수 있습니다. 즉시 평가됩니다. 최상위 레벨 은 표현식의 유형과 값을 바로 뒤에 표시합니다.
# "Hello Worlds!";;
- : string = "Hello Worlds!"
또한 파일에 최상위 레벨 을 시작할 수도 있습니다. 이것에 대한 설명을 볼 수 있습니다.
최상위 레벨 에서 입력을 용이하게하기 위해 입력 히스토리와 같은 몇 가지 기능을 제공하는 ledit 또는 rlwrap 과 같은 도구를 사용할 수 있습니다.
$ ledit ocaml
$ rlwrap ocaml
바이트 코드로 컴파일
우리에게는 바이트 코드 로 컴파일되는 컴파일러와 원시 코드로 컴파일되는 다른 두 가지 컴파일러가 있습니다. 첫 번째는 Java 가상 머신의 바이트 코드 와 동일합니다. 따라서 바이트 코드 는 덜 효율적이지만 이식성이 뛰어납니다.
OCaml 컴파일러가 사용하는 확장 파일이 있습니다 :
| 신장 | 정의 |
|---|---|
.ml | 소스 코드 (C의 .c ) |
.mli | 인터페이스 (C의 .h ) |
.cmo | ocamlc 에 의해 바이트 코드로 컴파일 된 소스 코드 |
.cmi | ocamlc 의해 컴파일 된 인터페이스 코드 |
.cmx 및 .o | 원시 코드로 ocamlopt 에 의해 컴파일 된 소스 코드 |
.cma | 라이브러리 (일부 *.cmo 버킷)의 바이트 코드 |
.cmxa 및 .a | 네이티브 코드의 라이브러리 |
.cmxs | 네이티브 코드 라이브러리 (동태 적로드) |
바이트 코드 컴파일러는 ocamlc 입니다.
다른 공통 옵션이 있습니다.
-
-c: 링키지 프로세스없이 소스 파일을 컴파일 (실행 파일 생성). 따라서ocaml -c foo.ml명령은.cmo파일을 생성합니다. 헤더 파일을 컴파일 할 필요가없는 C와 달리 OCaml에서.mli파일을 컴파일해야합니다 :ocaml -c foo.mli.
인터페이스를 먼저 컴파일해야합니다. 나중에 소스 파일을 컴파일 할 때 OCaml은 구현이 인터페이스와 일치하는지 확인하려고 시도한다.
.mli 파일은 필수는 아닙니다. .mli 파일없이 .ml 파일을 컴파일하면 OCaml은 자동으로 .cmi 파일을 생성합니다.
-o: 일부.cmo파일을 실행 파일로 컴파일합니다. 예 :ocamlc -o program foo.cmo bar.cmo. 이 파일은 첫 x 째 파일에 의존성이없는 종속성에 따라 정렬되어야합니다.-I: 컴파일러가 컴파일에 필요한 파일 (예 : 인터페이스 또는 소스 코드)을 찾을 수있는 다른 디렉토리를 나타냅니다. 그것은 C 컴파일러의-I와 동일합니다.
우리는 다른 많은 옵션이 있습니다. 자세한 내용은 설명서 를 참조하십시오.
이제 hello.ml 작성하고 ocamlc -o hello hello.ml 을 사용하여이 파일을 컴파일하여 바이트 코드 프로그램을 생성 할 수 있습니다.
let () = print_endline "Hello World!"
let () = ... 은 프로그램의 첫 번째 항목입니다 (예 : C의 main 항목). 이후, 우리는 인자 "Hello World!" 와 함께 함수 print_endline (표준 라이브러리에 의해 제공됨)을 사용한다 "Hello World!" Hello Worlds 를 표준 출력에 개행 문자로 인쇄한다.
컴파일이 끝나면 .cmo 파일과 .cmi 파일이 자동으로 컴파일러와 프로그램 hello 에서 생성됩니다. 프로그램을 열 수 있으며이 파일의 상단에서 다음을 볼 수 있습니다.
#!/usr/local/bin/ocamlrun
즉, 프로그램에서 바이트 코드 (예 : JVM)를 실행하기 위해 ocamlrun 프로그램 (배포판에서 제공)이 필요합니다.
원시 코드로 컴파일
네이티브 코드를 생성하는 또 다른 컴파일러가 있습니다. 컴파일러는 ocamlopt 입니다. 그러나 생성 된 실행 파일은 다른 대부분의 아키텍처에서 작동하지 않습니다.
ocamlopt 는 ocamlc 와 동일한 옵션을 사용하므로 ocamlopt -o hello hello.ml 실행할 수 있습니다. .cmx 및 .o 파일을 볼 수 있습니다.
마지막으로 바이트 코드 / 원시 코드 프로그램에서 다음을 실행할 수 있습니다.
$ ./hello
Hello World!
$
Windows (기본) 설치
전제
이 지침은 Windows에 원시 OCaml 바이너리를 설치하는 절차를 보여줍니다. 운영 체제가 Windows 10 (Insider Preview) build 14316 이상인 경우 Windows의 Ubuntu에서 Bash를 통해 OCaml을 설치할 수도 있습니다. 이 경우 Ubuntu에 OCaml을 설치하라는 지시를 따르십시오.
OCaml과 Opam 설치
OCaml 공식 배포판을 다운로드하십시오. 여기에는 OCaml 컴파일러와 Opam 패킷 관리자가 모두 들어 있습니다. C:/OCaml 소프트웨어를 설치했다고 가정하십시오. 당신이 correcly OCaml을 설치했는지 확인하려면 cmd.exe 열고 ocaml 입력 cmd.exe .
'ocaml' is not recognized as an internal or external command, operable program or batch file 메시지 'ocaml' is not recognized as an internal or external command, operable program or batch file C:/OCaml/bin 을 경로 (환경 변수)에 추가해야합니다.
경로에 OCaml 바이너리 추가하기
Control Panel > System and Security > System > Advanced system settings (on the left) > Environment Variables 에서 System Variable Path 탭을 선택한 다음 Edit 을 선택 Edit .
C:/OCaml/bin; 추가하십시오 C:/OCaml/bin; 목록에.
Cygwin 설치
Cygwin을 사용하지 않으면 Opam을 사용할 수 없습니다. 사실 cmd.exe 에서 Opam 입력 opam 을 열려고하면 다음 메시지가 표시됩니다. Fatal error: exception Unix.Unix_error(20, "create_process", "cygcheck") .
Cygwin을 다운로드하고 설치 프로그램을 시작하십시오. 다음 패키지를 확인하십시오.
- 자동차
- 디 뿌틸
- libreadline
- 하다
- m4
- mingw64-x86_64-gcc-core
- mingw64-x86_64-gmp
- mingw64-x86_64-openssl
- mingw64-x86_64-pkg-config
- mingw64-x86_64-sqlite3
- 반점
- 반지 짓기
- 압축을 풀다
- wget
C:/cygwin (64 비트 버전의 경우 C:/cygwin64 에 소프트웨어를 설치했다고 가정합니다. cmd 열고 wget (또는 C:/cygwin/bin 에있는 실행 파일 중 하나)을 입력하여 Cygwin 실행 파일을 사용할 수 있는지 확인하십시오. 실행 파일이 열리지 않으면 경로 (환경 변수)에 C:/cygwin/bin 을 추가하십시오.
Opam 구성
cmd.exe 열고 opam init 입력하여 opam init 을 구성하십시오.
그런 다음 ocamlfind (OCaml 컴파일러의 일부)를 다음과 같이 설치하십시오.
opam install ocamlfind
opam config env
ocamlfind 가 cmd.exe 입력되어 있는지 확인 cmd.exe .
명령 opam config env 추가하는 데 사용됩니다 opam 환경 경로의 실행 파일 디렉토리. 로그 아웃 한 후에 ocamlfind 더 이상 접근 할 수 없다면, 수동으로 추가 할 수 있습니다 : C:/Users/<your user>/Documents/.opam/system/bin/ .
패키지 설치
패키지는 Opam을 통해 opam opam install xyz 명령과 함께 opam install xyz 됩니다. 여기서 xyz 는 패키지의 이름입니다.
UTop 설치
opam install utop 명령을 실행 해보 opam install utop . 오류가 없다면 utop 을 입력하면 실행 파일이 열립니다.
메시지가 표시되면
[ERROR] The compilation of zed failed at "ocaml setup.ml -build".
단일 패키지를 수동으로 설치해야합니다. 다시 입력 해보십시오.
opam install zed
opam install lambda-term
opam install utop
lambda-term 과 utop 은 모두 설치되지 않을 수 있습니다. 문제 해결 섹션을 참조하십시오.
코어 설치
opam install core core 패키지를 설치할 수 있습니다. Windows 64 비트 버전 (및 64 비트 Cygwin)에서 다음 오류가 표시됩니다.
[ERROR] core is not available because your system doesn't comply with os != "win32" & ocaml-version = "4.02.3".
문제 해결 : 일반 파일을 만들 수 없음
다음 메시지와 함께 xyz.10.1 이라는 이름의 패키지가 설치에 실패한 경우 (xyz는 패키지의 이름이고 10.1은 해당 버전 임)
install: cannot create regular file '/cygdrive/c/Users/<your user>/Documents/.opam/system/bin/<something>': File exists
이 디렉토리에 가야합니다 :
C:\Users\<your user>\Documents\.opam\repo\default\packages\<xyz>\<xyz.10.1>\files
xyz.10.1.install 파일을 삭제하십시오.
문제 해결 : 공유 라이브러리를로드 할 수 없습니다.
Opam의 패키지 (예 : utop )를 열려고하면 다음과 같은 오류가 나타납니다 :
Fatal error: cannot load shared library dlllwt-unix_stubs
Reason: The specified module could not be found.
opam config env 다시 실행하고 실행 파일을 다시 열어보십시오.