게시판 인덱스

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

signature와 structure에 대한 질문입니다.

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



가입: 2007년 9월 16일
올린 글: 16

올리기올려짐: 2007년9월23일 6:12    주제: signature와 structure에 대한 질문입니다. 인용과 함께 답변

숙제 2의 4번 문제를 하는 중에 궁금한 점이 생겼습니다.

문제에 주어진대로 다음과 같이 구현을 한 후에
코드:

structure IntListQ =
 structure
  type element = int list
  type queue = ...
...
 end

문제에 주어진 예제를 실행해 보면 잘 되는데요.

여기에다가 signature Queue를 지정해준다음
코드:

structure IntListQ : Queue =
 structure
  type element = int list
  type queue = ...
...
 end

이렇게 signature를 지정해 준후에
다음 명령을 실행 시키면
코드:

val myQ = IntListQ.emptyQ
val yourQ = IntListQ.enQ(myQ, [1])

다음과 같은 오류가 납니다.
인용:

오류: IntListQ.element 타입이어야 하는데 _a list 타입입니다.



왜 이런 오류가 나는 것인지요?

structure의 타임을 명시적으로 지정해 줬을 뿐인데 실행시 오류가 나는 이유가 뭔지 모르겠습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
오학주



가입: 2005년 9월 5일
올린 글: 118

올리기올려짐: 2007년9월23일 11:08    주제: 인용과 함께 답변

signature로 타입을 지정했을 때 아마 다음 줄에서 에러가 날 겁니다.
인용:

val yourQ = IntListQ.enQ(myQ, [1])


signature로 감싸주면 IntListQ를 사용하는 입장에서 signature에 적혀있는 내용만 알 수 있습니다. element가 IntListQ내에서 int list로 구현되어 있는지 모르게 되지요.
즉, 프로그래머가 element 가 int list인 것을 가정하고 프로그램하는 것은 오류입니다.
이 정보를 사용자가 모르게 하도록 하는것이 signature를 사용하는 목적이겠죠?

Queue타입을 지정해줬을때 컴파일 안되는 문제를 해결하려면
1. signature에서 element type이 int list임을 알려주거나
2. int list를 element로 바꾸어주는 함수를 Queue 타입에 추가하거나
하셔야 합니다.

1의 경우에는 signature선언부분의
type element 를
type element = int list 라고 해주시면 되고요.
(그런데 이 방법은 컴파일만 되도록 하는 임시방편이지 Queue를 정수형타입만으로 제한하고 있기 때문에 본래의 목적에 어긋난다는것도 알아두세요 Sad)

2의 경우에는 signature와 structure에
element_of_int : int -> element 와 같은 함수를 정의하시면 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
허기홍
손님





올리기올려짐: 2007년9월26일 16:12    주제: 인용과 함께 답변

그러면

실행시킬때

val myQ = IntListQ.emptyQ
val yourQ = IntListQ.enQ(myQ, element_of_int([1]) )


라고 실행해야하는 겁니까??
위로
김진산



가입: 2006년 9월 13일
올린 글: 45

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

[질문1]

인용:

2의 경우에는 signature와 structure에
element_of_int : int -> element 와 같은 함수를 정의하시면 됩니다.


element가 int list 형인데 elemnet_of_int : int -> element 가 아니라

element_of_int_list : int list -> element 아닌가요?

[질문2]

인용:

val myQ = IntListQ.emptyQ
val yourQ = IntListQ.enQ(myQ, element_of_int([1]) )


라고 실행해야하는 겁니까??



허기홍님이 위와 같이 질문하셨는데,

인용:

val myQ = IntListQ.emptyQ
val yourQ = IntListQ.enQ(myQ, IntListQ.element_of_int([1]) )


라고 생각하고 있는데 맞습니까?


[질문3]

sturcture로만은 잘 동작하다가, signature를 붙이고 문제가 생겼는데요~

저의 경우는 아래와 같은 현상이 있습니다.


인용:

# val myQ = IntListQ.emptyQ;;
val myQ: IntListQ.queue = <abstr>

# val yourQ = IntListQ.enQ(yourQ, IntListQ.element_of_int_list([1]));;
val yourQ: IntListQ.queue = <abstr>


<abstr>이 무엇일까요. @_@?

---

답변 부탁드립니다.
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문 MSN 메신저
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2007) 시간대: GMT + 9 시간(한국)
페이지 11

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


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