수색…


안녕하세요 세계

이 예제는 OCaml을 설치 했다고 가정합니다.

OCaml 코드 컴파일하기

다음 내용으로 hello.ml 이라는 새 파일을 만듭니다.

print_string "Hello world!\n"

ocamlc 는 OCaml 컴파일러입니다. 이 스크립트를 컴파일하고 실행하려면 다음을 실행하십시오.

$ ocamlc -o hello hello.ml

결과 바이너리를 실행한다.

$ ./hello
Hello world!

OCaml 코드 실행

이 스크립트를 바이너리로 컴파일하지 않고 실행할 수도 있습니다. 당신은 사용하여 수행 할 수 있습니다 ocaml , OCaml의 대화식 사용을 허용하는 OCaml의 최상위 시스템. 쉘에서 간단히 실행하십시오.

$ ocaml hello.ml
Hello world!

REPL에서

새 셸을 열고 ocaml 을 입력하여 최상위 시스템을 엽니 다. 세션에 들어가면 동일한 프로그램을 입력 할 수 있습니다.

       OCaml version 4.02.1

# print_string "hello world!\n";;

표현식을 평가하고 인쇄를 시작하려면 Enter 키를 누릅니다.

hello world!
- : unit = ()

성공! 우리는 그것이 hello world! 인쇄 한 것을 hello world! , - : unit = () 은 무엇인가? OCaml은 문장이 없으며, 모든 것은 형식화 된 값으로 평가되는 표현식입니다. 이 경우 print_stringstring 을 입력으로 받아서 하나의 unit 반환하는 함수입니다. unit 는 하나의 값 () (단위라고도 함 () 만 취할 수있는 유형으로 간주하고 의미있는 값을 반환하지 않는 완성 된 계산을 나타냅니다.

이 경우 print_string 은 화면에 입력으로받은 문자를 넣는 부작용을 가지고 있기 때문에 첫 번째 행이 표시됩니다.

REPL을 종료하려면 ctrl+D 누릅니다.

유닉스 스크립트

우리는 OCaml 스크립트를 만드는 두 가지 방법이 있습니다. 첫 번째는 시스템 탑 레벨 ( apt-get 과 같은 패키지 관리자가 제공)을 사용하고 두 번째는 OPAM이 제공하는 최상위 레벨을 사용합니다.

시스템 탑 레벨 사용

좋아하는 편집기를 열고 다음을 작성하십시오.

#!/usr/bin/ocaml

print_string "hello worlds!\n";;

후에 chmod +x your_file.ml 을 사용할 수 있으며 ./your_file.ml 하여 스크립트를 실행할 수 있습니다.

OPAM에서 제공하는 최상위 도구 사용

#!/usr/bin/env ocaml

print_string "hello worlds!\n";;

큰 차이점은 당신의 최상위 버전에 관한 것입니다. OPAM을 특정 스위치 (예 : opam switch 4.03.0 ) opam switch 4.03.0 경우 스크립트는 OCaml 4.03.0을 사용합니다. 첫 번째 방법으로 데비안 시드 (Debian Sid)에서 스크립트는 OCaml 4.02.3을 사용합니다.

당신은 대체 할 수있는 오두막을 하여 #!/usr/bin/env utop 사용 utop 대신 바닐라 최상위을.

~을 유인하다

utop 은 배포판 외부의 또 다른 ocaml 최상위 utop 입니다. 즉, utop 을 다운로드하고 설치해야합니다 (쉬운 방법은 OPAM : opam install utop 을 사용하는 것입니다). utop 는 역사적, 완성 및 대화식 라인 편집과 같은 많은 기능을 갖추고 있습니다.

따라서, 일부 ocaml 코드를 사용하는 쉬운 방법을 utop 이 가장 좋습니다.

utop 하지 ocaml ?

당신이 위와 같은 ocaml 스크립트를 원한다면 utopocaml 은 큰 차이가 없습니다. 하지만 OCaml 커뮤니티의 공통점은 ocaml 대신 utop 을 사용 utop 것입니다.

실제로 ocaml REPL은 ocaml 배포판에서 제공합니다. 따라서이 REPL은 컴파일러의 릴리스주기를 따르고 일부 기능을 원할 경우 컴파일러의 다음 릴리스를 기다려야합니다. 우리가 설명했듯이 utop 은 배포판 외부에 있으므로 릴리스주기는 컴파일러에 의해 제약을받지 않으며 추가 기능을 원하면 ocaml 보다 utop 내부 utop 기능을 밀어 넣으려고 할 가능성이 높습니다 :)!

이 점에 대한 (그리고 역사적인 기능 용) OCaml의 지역 사회에서 대부분의 사람들이 사용하는 것을 선호 utop 보다 ocaml .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow