게시판 인덱스

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

숙제 6 문제 1의 PowerSetFun에 대한 질문입니다.

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



가입: 2007년 3월 28일
올린 글: 19

올리기올려짐: 2007년6월7일 21:23    주제: 숙제 6 문제 1의 PowerSetFun에 대한 질문입니다. 인용과 함께 답변

먼저 add와 cup의 차이에 대한 답변 감사드립니다. 연습문서를 열심히 뒤져봐야겠군요. Cool

이번의 질문은
코드:
functor PowerSetFun(A:SET) =
   struct
    type t = A.t A.set

에서 type t = A.t A.set 부분이 이해가 안 가서 드립니다. 이게 중간에 *가 빠진 건지 아니면 저런 타입이 가능한 건지 모르겠습니다. 타입은 항상 int나 string같이 정해진 무언가(?)이거나 *와 ->로 결합시켜주는 게 아닌건가요 ;;
인용:
- 접속방안에서는 A.t A.set * A.t A.set -> A.t A.set 입니다.
이런 에러가 나오고보니 이상해서요 (접속방안은 또 뭔지 Sad )
위로
사용자 정보 보기 비밀 메시지 보내기
공순호



가입: 2005년 9월 29일
올린 글: 363
위치: 302동 312-2호

올리기올려짐: 2007년6월7일 22:32    주제: 인용과 함께 답변

1.

말씀하신 것처럼

타입을 만들 때에는 다른 타입들을 이용해서

인용:
무언가(?)이거나 *와 ->로 결합시켜주는


방법도 있지만

type variable을 이용해서, 임의의 타입을 갖는 타입을 만들어낼 수도 있습니다.

(연습 시간에 type 'a option = None | Some of 'a 에 관해서 설명드린 적이 있지요.)


이미 hw6.ex1의 스펙에도 이러한 것을 이용하고 있네요.


코드:
type 'a set = Empty | Set of 'a * 'a set



set 타입은 Empty 이거나

임의의 타입 'a의 값과 그 값으로 만든 set을 pair로 하는 타입입니다.

ex : Empty, Set(1, Set(2, Empty) - (o)
Set(1, Set("abc", Empty) - (x)



2.

PowerSetFun에 정수를 원소로 하는 모듈 IntSet을 넣었다면

정수들의 집합을 원소로하는 모듈을 얻게 됩니다.


비유하자면,

PowerSetFun({1, 2, 3, 4, ...}) = { \phi, {1}, {2}, {3}, ... , {1, 2}, ... }

와 같이 되겠네요.


즉, PowerSetFun이 만들어내는 모듈의 원소의 type은 (즉, type t 는)

입력 받은 모듈이 표현하는 집합의 type이어야 합니다.



이제 powerset으로 가서 살펴보면

코드:
functor PowerSetFun(A:SET) =
   struct
    type t = A.t A.set


에서 마지막 줄의 A.set의 type은 'a set 입니다. (from signature)

여기서 'a에 A.t가 들어가는 것이지요.


예를 들어서 PowerSetFun의 인자로 들어오는 A에서

type set의 실제 구현을


코드:
type 'a set = Empty | Set of 'a * 'a set


과 같이 했다고 합시다. (그리고, 아마도 이렇게 구현하겠지요?)


그렇다면

코드:
 type t = A.t A.set


의 의미는

코드:
 type t = Empty | Set of A.t * A.t A.set


와 같이 되고


그리고 이것의 해석은

"PowerSetFun이 반환하는 모듈의 type t는 Empty이거나

A.t를 원소로 하는 집합이다."가 되겠네요.


잘 이해가 가실지 걱정이 되네요, 혹시 궁금하신 것이 더 있으시면 알려주시기 바랍니다.
_________________
- soon@ropas
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Spring 2007) 시간대: GMT + 9 시간(한국)
페이지 11

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


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