게시판 인덱스

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

8-3 질문입니다

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2012)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
박준호



가입: 2012년 9월 15일
올린 글: 71

올리기올려짐: 2012년12월4일 23:33    주제: 8-3 질문입니다 인용과 함께 답변

1. 8-3의 모듈이 집합큐 모듈함수라고 했으니까 QueueMake에서는 enq함수를 실행할 때 내부에 동일한(의미를 가지는) 큐가 이미 있는지 확인할텐데요,
Queue(3::2::1::[],[])과 Queue([],1::2::3::[])은 같은 동작을 하잖아요.
그런데, = 연산자는 구조가 같은지 보는함수라서 위 함수가 같다고 체크를 못합니다.

그러면 이러한 두 '구조는 다르지만 의미가 같은 큐'가 정말로 같은지 체크해주는 함수가 필요한데요, 8-2 과제에서는 임의대로 q_equal같은 함수를 만들어서 리스트를 체크해하는데, 여기서(StringSetQQ내부에서) StringSetQ.deq를 이용합니다.
그런데 8-3에서는 StringSetQ.deq같이 사용못하잖아요
(왜냐면 저걸 쓰려면 module StringSetQ = QueueMake(...)로 만들어야하니;Wink

그럼 아예 QueueMake안에서 q_equal = (string list * string list) * (string list * string list) -> bool 로 '어떤 타입이 들어올지 예상하고' 만들어야하나요???
이렇게되면 뭔가...엄청 비효율적인것같아서요.

2. 저렇게 짠다고 해도 함수의 인자로는 element라는 타입으로 숨겨져 들어올텐데 element가 같은지 알고싶을때 = 를 쓸지 q_equal을 쓸지 어떻게 선택적으로 하나요?
위로
사용자 정보 보기 비밀 메시지 보내기
최민아



가입: 2009년 9월 28일
올린 글: 236

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

단순히 =이 아니라 큐의 element에 따라 다른 equal 함수를 사용하고 싶으시면

ArgTy 시그니처에 equal이라는 함수를 선언하고
실제로 Arg 모듈을 QueueMake 함수의 인자로 넣을 때에
equal 함수를 제공해주면 됩니다.
module StringQQArg = struct type t=StringQ.queue let equal=..end
와 같이요.

그리고 QueueMake 안에서 Arg.equal을 이용하면 되겠지요.

(이렇게 하셔도 되고, 이번 숙제에서는 그냥 구조가 같은지만 비교하여도 괜찮습니다.)
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2012) 시간대: GMT + 9 시간(한국)
페이지 11

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


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