OCaml 3.12.1 윈도우 용 설치 시 주의할 점 (PATH 가 바뀌는 버그)

OCaml 3.12.1 윈도우 용 인스톨러가 하는 일 중에 나쁜 일(사용자를 난감하게 하는 일)이 하나 있다. 설치 되고 나면 시스템 환경변수 중에 OCAMLLIB 를 잡아주는 것은 좋은데, PATH 를 완전 바꾸어 버린다. 원래 있던 PATH 값은 완전 사라지고, 설치된 OCaml 의 bin 폴더의 경로명과  emacs 아래의 bin 폴더의 경로명만 남아 있다. 그러므로 OCaml 3,12,1 윈도우 용을 설치하기 전에는 시스템 환경변수 PATH 의 값을 미리 별도로 저장한 다음, 설치가 끝나면 PATH 의 값을 (뿥여 넣기하여) 복구시켜 주어야 한다.

상세 내용 참조

 

아래는 http://protz.github.com/ocaml-installer/ 에 쓰여진 글

Other versions

 

윈도우에 OCaml 3.12.1 을 설치 후 바꾸어야 하는 것 한 가지 더

OCaml 3.12.1 의 설치 폴더 아래에 bin 폴더 내에 파일명 ocamlmktop 을 파일명  ocamlmktop.exe 으로 바꾸어야 함. (파일명에 확장명 .exe 를 추가) 이 파일은 ocamlyacc, ocamllex 와 함깨 쓰이기도 한다. 컴파일되어 생성된 실행 파일이 OCaml 의 toplevel 위에서 실행되게 할 때 쓰이는 도구이다. (실행파일이 실행되면 OCaml 의 프롬프트가 나온다.)

 

 

Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, ErLang 언어에서는 asin 함수로 구현되어 있다.

OCaml 언어는 F#, Scala 언어 처럼 비순수 함수형 언어이다. (여기서 바순수라 함은 절차적 언어 처럼 for, while, break 등의 제어문 기능을 갖고 있어서 C 언어나 Java 언어 처럼 작성할 수 있다는 뜻이다.)

OCaml 언어로 작성된 소스에서는 각 명령 줄이 두 개의 세미콜론(;;)으로 끝나야 한다.

영문 위키피디아의 OCaml  프로그래밍 언어 설명: http://en.wikipedia.org/wiki/OCaml

OCaml 언어로 부동소수점수(float 타입, 이느 C 언어와 Java 언어의 double 타입에 해당)의 사칙 연산 기로가 +, -, *, / 가 아니라 각 연산지 뒤에 점(.)을 하나씩 추가한 +., -., *., /. 임에 주위 한다. 정수(int) 타입의 사칙 연산 기호는 +, -, *, / 를 그대로 사용한다. 그리고 float 타입과 int 타입을 섞어서 연산할 때는 반드시 타입을 통일시키는 작업을 해야 한다.

아래에서 샤프 기호(#)는 OCaml 의 프롬프트이다. 테스트는 진한 글자로 된 부분만 입력하면 된다.

명령프롬프트> ocaml
        Objective Caml version 3.12.1

# 3 + 1.2;;
Characters 4-7:
  3 + 1.2;;
      ^^^
Error: This expression has type float but an expression was expected of type
         int
# (float_of_int 3) + 1.2;;
Characters 0-16:
  (float_of_int 3) + 1.2;;
  ^^^^^^^^^^^^^^^^
Error: This expression has type float but an expression was expected of type
         int
# (float_of_int 3) +. 1.2;;
- : float = 4.2
# 3 + (int_of_float 1.2);;
- : int = 4

 

아래의 소스는 컴파일 없이 "ocaml 소스파일명" 으로 실행해도 되고, "ocamlc -o 실행파일명 소스파일명" 컴파일한 뒤 생성된 실행파일을 실행해도 된다.

컴파일하여 실행하는 경우 현재 최신 버전인 OCaml 4.00.1 은 "NTVDM CPU CS ......" 에러가 발생힌디.


OCaml 3.12.* 에서는 컴파일 하여 실행하더러도 아무 문제가 없다.

(윈도우 Vista, XP, 7 등에서 OCaml 3.12.1 은 설치되는 중에 시스템 환경변수 PATH 의 값을 삭제해 버리므로 주의를 요한다. PATH 의 값을 다른 곳에 저장해 두었다가 복원해야 함.)

 

(*
   Filename: testArcSine.ml
 
   Execute: ocaml testArcSine.ml

     Or
 
   Compile: ocamlc -o testArcSine testArcSine.ml
   Execute: ./testArcSine
 
     Or
 
   Compile: ocamlc -o testArcSine.exe testArcSine.ml
   Execute: testArcSine.exe
 
   Date: 2013. 1. 3.
   Copyright (c) pkim _AT_ scripts.pe.kr
*)


let asinh x = log(x +. sqrt(x *. x +. 1.0));;

let acosh x = log(x +. sqrt(x *. x -. 1.0));;

let x = -0.9;;
let y = asin(x);;

let _ = Printf.printf "y = asin(%g) = %.9f\n" x y;;
let _ = Printf.printf "sin(y) = sin(%.9f) = %g\n" y (sin y) ;;
let _ = Printf.printf "\n";;

let x = 1.1;;
let u = acosh(x);;
let _ = Printf.printf "u = acosh(%g) = %.10f\n" x u;;
let v = asinh(x);;
let _ = Printf.printf "v = asinh(%g) = %.10f\n" x v;;

let _ = Printf.printf "cosh(u) = cosh(%.10f) = %g\n" u (cosh u);;
let _ = Printf.printf "sinh(v) = sinh(%.10f) = %g\n" v (sinh v);;

(*
Output:
y = asin(-0.9) = -1.119769515
sin(y) = sin(-1.119769515) = -0.9

u = acosh(1.1) = 0.4435682544
v = asinh(1.1) = 0.9503469298
cosh(u) = cosh(0.4435682544) = 1.1
sinh(v) = sinh(0.9503469298) = 1.1
*)

 

 

Posted by Scripter
,
OCaml 은 Objective Caml 을 줄인 글로서 발음은 오캐멀(oʊˈkæməl)이라고 읽는다.
Caml 언어는 함수형 언어 ML 에서 파생된 언어로서 OCaml 과 Caml Light 로 나뉜다. OCaml 은 Caml 에 객체지향 언어의 기능을 추가한 명령형 언어의 특징징을 지닌 객체지향 함수형 언어이다.

* 참고로 안터프리터 명령 ocaml 로 실행한 경우에는 # 프롬프트에서 #quit;; 을 입력하고 엔터 키를 누르면 된다.

Posted by Scripter
,