일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ROS #Robotics #ROS기초
- 패스트 캠퍼스 #자율주행 #비전
- 크롬오류#크롬검색어자동완성끄기#검색어자동완성오류#검색어자동완성 제거#검색어 노란선#검색어반복입력
- 파이썬 채팅
- 스트림 암호 one-time-pad 공격#보안#암호
- 파이썬#파이썬경로#파이썬폴더#파이썬디렉토리
- 리눅스#모의해킹#리눅스명령어#head 명령어
- 파이썬 #파이썬프로젝트 #파이썬 예시 #파이썬 파일경로 #파이썬 자동화
- 파이썬 열
- 파이썬
- 파이썬 텍스트 변환 #파이썬 공부
- 파이썬 유튜브
- 파이썬 파일 전송
- pdf 번역
- 논문번역 꿀팁
- 파이썬 #
- ROS #spin() #spinOnce() #ROS기초
- 리눅스기초#리눅스명령어#리눅스 tail#tail#모의해킹 리눅스
- QGC#QGrouncControl#GLIB오류
- 파이썬 음성파일 텍스트 변환
- 파이썬 음성인식
- 파이썬#subprocess#communicate()
- 파이썬 엑셀 파일 읽고 쓰기
- PDF 개행문자
- 파파고 번역
- 파이썬 예시
- 통계 #ROC #TPR #FPR #TNR #이진분류 #Accuracy #Recall
- 파이선 행
- 파파고 꿀팁
- 파이썬 프로젝트
개발자비행일지
OCAML 사용자 정의 모듈 본문
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 Structure는 Module에 대한 선언 정도로 생각하면 된다.
'▶ 연구일지' 카테고리의 다른 글
회로 단락의 정의 (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 |