게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

모듈에 대한 보충설명

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2018)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
로파스
Site Admin


가입: 2012년 9월 9일
올린 글: 280

올리기올려짐: 2018년9월11일 11:27    주제: 모듈에 대한 보충설명 인용과 함께 답변

오켐엘 튜토리얼 시간에 모듈 개념에 대한 안내가 부족했던것같아서 간단한 보충설명을 드립니다.

모듈이란 자바의 클래스와 비슷한 개념으로,

예를들어 List 모듈에서는 리스트를 다루는 함수들이 모여서 선언되어있습니다.

또 사용자정의 타입이나 예외도 모듈에 포함될 수 있는데,

숙제2의 IntListQ 모듈 정의에 포함된 element와 queue타입, EMPTY_Q가 그것입니다.


module type은 sig와 end로 시작과 끝을 구분하여 다음과 같이 정의합니다.

module type에서의 val은 함수 혹은 값을 정의할때 사용합니다.

module type {모듈타입이름}
sig
type ...
exception ...
val ...
...
...
end


module은 struct와 end로 시작과 끝을 구분하여 다음과 같이 정의합니다.

module {모듈이름}
struct
type ...
exception ...
let ...
...
end

모듈타입은 말그대로 모듈의 타입이라고 보시면 되며, 해당 모듈이 반드시 포함해야 하는 타입, 예외, 함수, 값들이 무엇인지 선언해둔 것입니다.

모듈타입에 정의된 타입은 특정 타입으로 정할 필요는 없고, 그러한 사용자 정의 타입을 포함해야 한다는 것을 의미합니다. 또한 함수나 값을 직접 정의하지는 않고, 해당 함수나 값이 가져야할 타입만을 정의합니다.

여기서 struct end로 정의한 모듈이 sig end로 정의한 모듈타입에 알맞은지를

확인하는 방법은 숙제 공지에서도 나왔듯이 ({모듈이름} : {모듈타입이름})의 타입명시가 성공하는지를 확인해보시면 됩니다.

다음의 예시는 ValidIntListQ라는 새로운 모듈을 IntListQ의 정의를 그대로 가져와 생성하면서, Queue라는 모듈타입에 맞는지까지 한꺼번에 확인하는 예시입니다.

이 식의 컴파일이 성공한다면, IntListQ는 Queue라는 모듈타입을 갖고있다는 뜻이 되겠지요.

module ValidIntListQ = (IntListQ : Queue)

모듈 개념에 대해 더 궁금하신 점이 있다면 웹보드에 질문해주세요.

-조교 드림.
위로
사용자 정보 보기 비밀 메시지 보내기
alonzo



가입: 2018년 9월 27일
올린 글: 1

올리기올려짐: 2018년9월27일 18:09    주제: Re: 모듈에 대한 보충설명 인용과 함께 답변

이동권 씀:
오켐엘 튜토리얼 시간에 모듈 개념에 대한 안내가 부족했던것같아서 간단한 보충설명을 드립니다.

모듈이란 자바의 클래스와 비슷한 개념으로,

예를들어 List 모듈에서는 리스트를 다루는 함수들이 모여서 선언되어있습니다.

또 사용자정의 타입이나 예외도 모듈에 포함될 수 있는데,

숙제2의 IntListQ 모듈 정의에 포함된 element와 queue타입, EMPTY_Q가 그것입니다.


module type은 sig와 end로 시작과 끝을 구분하여 다음과 같이 정의합니다.

module type에서의 val은 함수 혹은 값을 정의할때 사용합니다.

module type {모듈타입이름}
sig
type ...
exception ...
val ...
...
...
end


module은 struct와 end로 시작과 끝을 구분하여 다음과 같이 정의합니다.

module {모듈이름}
struct
type ...
exception ...
let ...
...
end

모듈타입은 말그대로 모듈의 타입이라고 보시면 되며, 해당 모듈이 반드시 포함해야 하는 타입, 예외, 함수, 값들이 무엇인지 선언해둔 것입니다.

모듈타입에 정의된 타입은 특정 타입으로 정할 필요는 없고, 그러한 사용자 정의 타입을 포함해야 한다는 것을 의미합니다. 또한 함수나 값을 직접 정의하지는 않고, 해당 함수나 값이 가져야할 타입만을 정의합니다.

여기서 struct end로 정의한 모듈이 sig end로 정의한 모듈타입에 알맞은지를

확인하는 방법은 숙제 블랙 프라이데이 공지에서도 나왔듯이 ({모듈이름} : {모듈타입이름})의 타입명시가 성공하는지를 확인해보시면 됩니다.

다음의 예시는 ValidIntListQ라는 새로운 모듈을 IntListQ의 정의를 그대로 가져와 생성하면서, Queue라는 모듈타입에 맞는지까지 한꺼번에 확인하는 예시입니다.

이 식의 컴파일이 성공한다면, IntListQ는 Queue라는 모듈타입을 갖고있다는 뜻이 되겠지요.

module ValidIntListQ = (IntListQ : Queue)

모듈 개념에 대해 더 궁금하신 점이 있다면 웹보드에 질문해주세요.

-조교 드림.



고맙습니다
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2018) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay