본문 바로가기

기타 언어/Ocaml7

[Ocaml] Ocaml - Batteries 패키지 / Batset등 여러 자료구조 사용법 Ocmal 에는 여러 자료구조 형태를 지원하는 Batteries 패키지가 있습니다! Batteries를 통해 Ocaml 에서도 스택, 집합(set), 테이블 등 여러 자료구조 이용이 가능합니다. Batteries 설치 opam 이라는 패키지 매니저를 이용하여 쉽게 설치가 가능합니다. $ opam install batteries Batteries 사용법 사용하고자 하는 코드 상단에 open Batteries 를 추가해주시면 Batteries 내부의 모듈들이 사용이 가능합니다. https://ocaml-batteries-team.github.io/batteries-included/hdoc2/ Batteries user guide A mutable, imperative, circular, doubly link.. 2020. 4. 29.
[Ocaml] Ocaml print / 출력 / print_endline / Ocaml 출력 종류 print_startline() : \n 을 출력한다. () 안에는 unit 타입이 들어가야한다. print_endline("내용") : 파이썬에 print , 자바의 println 과 비슷한 함수로 내용을 출력 한 후 줄바꿈이 자동으로 들어간다. 내용 타입은 반드시 string 타입을 써야한다. print_타입명 (내용) : 타입에 맞는 값을 출력한다. 예) print_int(13) , print_char('a') Ocaml 출력 사용 Ocaml 에서는 print 관련된 구문도 함수 자체로 여겨진다. 따라서 let prt = print_endline("abc") in 을 쓰면 prt 이 불러와질때마다 abc 를 출력하게 되는것이다. 주로 출력만 할때는 와일카드 '_' 을 이용해 l.. 2019. 10. 27.
[Ocaml] 모듈이란? / 모듈 사용법 / module 모듈이란? 관련있는 코드들의 모음을 뜻합니다. 다른 언어에서는 import 를 하듯 Ocaml 도 #load 를 통해 라이브러리를 로드하고 Open으로 모듈을 실행합니다. 우리가 작성하고 있는 파일도 그 자체로 모듈이 될 수 있습니다. 예를들어 test.ml 이라는 파일을 작성하고 있다면 test라는 모듈로서 사용이 가능한 것입니다. 모듈 사용 및 선언 모듈은 module 모듈이름 = struct 내용 fun1 x y = ~~ fun2 x y z = ~~ - 예시 end 로 직접 구현이 가능합니다. 모듈안에 모듈에 맞는 함수들을 만들어주면 모듈이름을 통해 함수로 접근이 가능합니다. - Ex) 모듈이름.fun1 5 2;; 또한 sig val (signitare value) 문을 통해 모듈 타입을 정해줄 수.. 2019. 10. 7.
[Ocaml] Type 선언 / Type 이란? Type 이란? 말 그대로 우리가 쓰는 int, float, string 같은 비슷한 맥락의 변수들의 카테고리 집합을 의미한다. 하지만 우리가 쓰는 이런 기존 타입들도 누군가의 설계에 의해 만들어진 것이다. 예를들면 '2 나 3 혹은 79 같은 소수점이 없는 정수들은 int 라는 type 으로 정의하자.' 라고 누가 이미 선언해놓은 것이다. Ocaml은 개발자가 직접 Type 선언이 가능하다. 기본 제공 Type 사용 예시: organ 이라는 신체기관을 의미하는 타입을 만들었다. | 는 여러 타입들을 나열할 때 사용되고 of 뒤에 나오는 것이 인자 라고 생각하면 된다. (인자 또한 타입을 가진다.) 예를들어 앞으로 Eye나 Mouth라는 것이 나오면 이제 Ocaml 에서는 organ type 으로 간주한.. 2019. 10. 2.
[Ocaml] hd, tl 문 / 함수형 프로그래밍 hd(head의약자) 와 tl(tail의 약자) 이란 List.hd, List.tl 을 의미하며 hd는 List의 첫 원소, tl은 첫 원소를 제외한 나머지 List를 추출한다. 예시) List.hd[1;2;3;4] = 1 List.tl[1;2;3;4] = [1;2;3] match와 함께 자주 쓰인다. 아래 모든 리스트 원소에 1씩 더해주는 함수 inc_one 를 예시로 보자. inc_one [1;2;3;] 를 한다면 (1+1) :: inc_one [2;3] .... inc_one[2;3] => (2+1) :: inc_one[3] inc_one[3] => (3+1) :: inc_one[] 결과적으로 [2;3;4] 가 출력된다. * :: 는 리스트에 원소 1개를 넣는 연산자이다. (리스트 끼리는 ::를 쓸.. 2019. 9. 28.
[Ocaml] if 문 / if 표현식 / 함수형 프로그래밍 Ocaml 에서의 if 는 if 조건1 then 조건1 만족할 떄의 표현 else 조건1 만족 안할때의 표현 이런 방식으로 사용이 됩니다. 예시) 사실상 Ocaml에서의 if문은 표현식(expression) 이기 때문에 조건 ? 만족O표현 : 만족X_표현 과 같은 느낌이라고 합니다. ( Python에서의 ? 느낌) = boolean-condition ? expression :other-expression -> 근데 저는 이게 무슨말인지 잘 모르겠어서 이해하신분은 댓글 부탁드립니다.. * 참고로 else if 도 가능합니다. if 조건1 then 조건1 만족할 떄의 표현 else if 조건2 then 조건만족할 떄의 표현 else 조건1,2 둘다 만족 안할때의 표현 출처 : https://ocaml.org.. 2019. 9. 27.