게시판 인덱스

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

[플젝] 외부 모듈의 타입에 대한 패턴 매칭을 할 시엔 어떻게 해야 하나요?

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2010)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
박재훈



가입: 2010년 9월 23일
올린 글: 8

올리기올려짐: 2010년12월4일 11:23    주제: [플젝] 외부 모듈의 타입에 대한 패턴 매칭을 할 시엔 어떻게 해야 하나요? 인용과 함께 답변

제목 그대로입니다.

Center.ml 에서 InfoFromServer.cmdResult, Avatar.avatarType 등의 타입과

Avatar.ml 에서 Map.grid, Map.sol 등의 타입에 대한 패턴 매칭을 할 시

각 패턴에 대해 Unbound constructor 라는 오류가 뜨는 것으로 보아서, 각 타입을 외부 모듈 어디에서 참조했으며 패턴은 이러이러하다 같은 정보를 추가로 써 줘야 할 것 같습니다.

어떻게 해야 하는지 궁금합니다. 몇 가지를 시도해 봤는데 다 오류가 나는군요...
위로
사용자 정보 보기 비밀 메시지 보내기
이승중



가입: 2010년 6월 22일
올린 글: 561

올리기올려짐: 2010년12월5일 11:54    주제: 인용과 함께 답변

open을 써서 다른 파일 모듈을 열 수 있습니다.

ocaml은 파일도 모듈처럼 쓰기 때문에

Server.ml이면 Server라는 모듈을 만든 것입니다.
(Server.mli는 시그니처라고 보시면 됩니다)

open Server하면 Server.ml 안의 내용들이 현재 파일에서 Server. 을 안쓰고도 다 접근할 수 있게 됩니다.

여기서 Server안의 Map 모듈 안에 있는 type에 대해 패턴 매칭을 하려고 하면

코드:
match value with
| Map.Sol _ ->
| Map.Nothing ->


이런식으로 쓰거나

다시 Map 모듈을 open 시켜서 현재 파일의 이름을 노출 시킬 수 있습니다.

코드:
open Server  (* 파일 맨 위에다가 적습니다 *)
open Map      (* Server안의 Map에 모듈에 대한 내용이 겉으로 드러나게 됩니다 *)

...

match value with
| Sol -> ...
| Nothing -> ...


open 하다가 보면 겹치는 이름이 생길 수 있는데, 이럴경우 모듈 이름을 쓰는 방식으로 구분하셔야 합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
김태훈



가입: 2010년 9월 6일
올린 글: 91

올리기올려짐: 2010년12월5일 11:56    주제: 인용과 함께 답변

저의 경우에는 모듈 안에 include Map 과 같은 방식으로 하였는데 이것과 open의 차이는 무엇인지 궁금해지네요 ㅎㅎ include의 경우에도 이것저것 아무거나 막 부르면 이름이 겹치더라구요 ㅋ
위로
사용자 정보 보기 비밀 메시지 보내기
이승중



가입: 2010년 6월 22일
올린 글: 561

올리기올려짐: 2010년12월5일 12:00    주제: 인용과 함께 답변

open은 접근할 수 있는 이름을 열어준다는 의미이고
include는 말 그대로 포함시키는 것입니다.

include A 하면 A 모듈에 있는 내용들이 그대로 복사되서 현재 모듈에 들어갑니다.

코드:
module A = struct
  let a = 1
end

module B = struct
  include A
  let b = 2
end

let _ = print_int B.a
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2010) 시간대: GMT + 9 시간(한국)
페이지 11

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


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