게시판 인덱스

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

숙제 2-5 타입 관련 질문

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2014)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
홍석진



가입: 2014년 9월 16일
올린 글: 3

올리기올려짐: 2014년9월29일 20:32    주제: 숙제 2-5 타입 관련 질문 인용과 함께 답변

숙제 2-5에서 IntListQ 뒤에 ": Queue"를 붙이거나

코드:
module ValidIntListQ = (IntListQ: Queue)
를 사용하여 실행하면 타입 에러가 납니다.

예를 들어

코드:
IntListQ.enQ(IntListQ.emptyQ,[1;2;3;4]);;

를 실행시킬때,

": Queue"를 붙이지 않은 경우에는
- : int list list * 'a list = ([[1; 2; 3; 4]], []) 와 같이 결과가 나오지만

": Queue"를 붙인 경우에는 int list와 element 타입이 다르다고 판단하여 에러가 납니다.
This expression has type IntListQ.queue * int list but is here used with type
IntListQ.queue * IntListQ.element

queue 타입의 경우도 만찬가지로 에러가 발생하였습니다.

모듈 타입 Queue의 type element, type queue 부분을 type element = int list, type queue = .... 와 같이 명시해주었더니 위의 문제가 해결되었습니다.

위와 같이 숙제에서 주어진 타입 시그니쳐 부분을 변경해도 되는건가요?

그게 아니라면 구현상의 문제가 있는건가요?
위로
사용자 정보 보기 비밀 메시지 보내기
강동옥



가입: 2009년 9월 18일
올린 글: 602

올리기올려짐: 2014년9월29일 23:39    주제: type 관련 인용과 함께 답변

우선, 숙제가 만족해야 하는 사항을 정리해드리면,

작성하신 숙제 뒤에
코드:
module ValidIntListQ = (IntListQ: Queue)

붙이셨을 때는 타입 에러 없이 시행이 되어야 합니다.

IntListQ 뒤에 ": Queue"를 붙이고
코드:
IntListQ.enQ(IntListQ.emptyQ,[1;2;3;4]);;

를 실행했을 때 타입 에러가 나오는 것은 정상입니다. 왜냐하면, Queue signature가 드러내 주는 interface에, element가 int list라는 정보가 들어있지 않기 때문입니다. 따라서 모듈 타입 Queue의 코드를 고쳐서 시그니쳐에 해당 정보를 명시해 주셨을 때 문제가 해결된 것입니다. signature를 붙이지 않을 경우에는 자동으로 struct와 end 사이에 있는 모든 정보가 외부에 interface로 드러나기 때문에 역시 에러가 나지 않은 것입니다.

만약
코드:
module ValidIntListQ = (IntListQ: Queue)

이 코드만 추가했을 때에 문제 없이 실행 된다면 타입을 잘 맞춰서 구현한 것이며, 제출하실 때는 이 코드를 제거해 주시고 IntListQ 뒤에 ": Queue"도 붙이지 말아 주시기 바랍니다. 또 Queue 시그니쳐도 그대로 두셔야 합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
홍석진



가입: 2014년 9월 16일
올린 글: 3

올리기올려짐: 2014년9월30일 1:06    주제: 인용과 함께 답변

감사합니다.

제가 ValidIntListQ를 가지고 테스트를 해보라는 거라고 잘못 생각했었던거네요.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2014) 시간대: GMT + 9 시간(한국)
페이지 11

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


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