관리 메뉴

개발자비행일지

OCAML 사용자 정의 모듈 본문

▶ 연구일지

OCAML 사용자 정의 모듈

Cyber0946 2020. 4. 3. 17:36

OCAML Creating Module

이제 우리는 사용자 정의 타입을 넘어서, 사용자가 정의한 module을 만들어 보자.

먼저 signature, structure, functor가 있다.

이런 자료들을 쓰는 이유는

1.원래 let이런식으로만 선언해주면 각각의 structure가 자신의 namespace를 가지는데 이들이 충돌이 날 수 있어서 이를 방지하고자 목적에 맞는 Module이라는 공간을 만드는 것이다.

2.다른 이유는 추상화를 통해서 간결하게 표현할 수 있기 때문이다.

 

모듈은 다음과 같은 방식으로 사용한다.

module 모듈이름(첫번째는 무조건 대문자) =

struct

-구현

end

모듈의 이름은 만약 ocaml파일 이름이 file.ml 이면 모듈의 이름은 File이 된다. 만약 File 모듈안에서 “module Foo = struct … end”가 구현된다면, 이 모듈은 File.Foo 이런 식으로 명명되어 진다.  

 

자 그럼, 예제를 통해서 알아보자.

module Module1 = struct

           let name = “first”

end

module Moduel2 = struct

           let name = “last”

           let fun1 () = “Done!”

end

 

let my_fun() =

Printf.printf “Module 1 is %s, Module2 is %s.\n” Module1.name Module2.name

이 코드에서 마지막 함수인 my_fun()은 모듈내에 있는 함수에 . 접근자를 통해서 접근하고 매개변수를 주어서 값을 반환하는 과정을 보여준다. 아래의 결과가 위의 소스코드를 실행시키고 my_fun()을 실행시킨 결과이다.

OCAMl StructureModule에 대한 선언 정도로 생각하면 된다.

'▶ 연구일지' 카테고리의 다른 글

회로 단락의 정의  (0) 2022.12.14
QGroundControl 실행 오류, GLIBC  (1) 2021.11.29
OCAML 사용자 정의 데이터 타입  (0) 2020.04.03
OCAML 자료형  (0) 2020.03.18
OCAML 설치하기  (0) 2020.03.15