이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
한재호 손님
|
올려짐: 2005년9월27일 20:14 주제: Exercise 6에서 질문이 있습니다. |
|
|
과제에 보면 모듈타입(signature)를 정의하고 이를 따르는 모듈(structure)를 이용해서 문제를 해결하라고 쓰여 있지만 실제로 예제를 보면
"structure _정수리스트_큐 : _큐_ = ..." 가 아니라
"structure _정수리스트_큐 = ..." 로 되어 있습니다.
결국 위의 signature 부분은 전혀 사용하지 않는 셈이구요.
과제의 의도가 모듈타입과 모듈을 사용하는 것도 포함되어 있다면 ": _큐_" 부분을 넣어야 하지만 그렇게 되면 마지막 사용 예제처럼
"val 니큐 = _정수리스트_큐.넣기(내큐, [1])"을 사용할 수 없습니다.
모듈 타입을 사용하면 내부 타입은 전부 abstract type으로 인식하기 때문에 "[1]"과 같은 값은 "원소"타입으로 매칭이 안되니까요.
아니면 제가 잘못 알고 있는 걸 지도 모르겠네요 -_-
여하튼 조교님의 명쾌한 답변 부탁드립니다. |
|
위로 |
|
 |
김덕환
가입: 2005년 8월 29일 올린 글: 190
|
올려짐: 2005년9월28일 0:20 주제: Re: Exercise 6에서 질문이 있습니다. |
|
|
한재호 씀: | 과제에 보면 모듈타입(signature)를 정의하고 이를 따르는 모듈(structure)를 이용해서 문제를 해결하라고 쓰여 있지만 실제로 예제를 보면
"structure _정수리스트_큐 : _큐_ = ..." 가 아니라
"structure _정수리스트_큐 = ..." 로 되어 있습니다.
결국 위의 signature 부분은 전혀 사용하지 않는 셈이구요.
과제의 의도가 모듈타입과 모듈을 사용하는 것도 포함되어 있다면 ": _큐_" 부분을 넣어야 하지만 그렇게 되면 마지막 사용 예제처럼
"val 니큐 = _정수리스트_큐.넣기(내큐, [1])"을 사용할 수 없습니다.
모듈 타입을 사용하면 내부 타입은 전부 abstract type으로 인식하기 때문에 "[1]"과 같은 값은 "원소"타입으로 매칭이 안되니까요.
아니면 제가 잘못 알고 있는 걸 지도 모르겠네요 -_-
|
재호 님 생각이 맞습니다. 설명도 정확하시구요. 숙제는 다음처럼 문제에 나와 있는 대로 하시면 되겠습니다.
코드: |
structure _정수리스트_큐 = ...
|
다만, 다음처럼 type constraint를 사용할 수도 있다는 것을 알아두시면 좋겠습니다.
코드: |
structure _정수리스트_큐 : _큐_ where type 원소 = int list = ...
|
위와 같이 선언하면 _정수리스트_큐 모듈의 타입이 다음처럼 됩니다.
코드: |
structure _정수리스트_큐:
sig
type 큐
type 원소 = int list
val 넣기: 큐 * int list -> 큐
val 빈큐: 큐
val _빈큐라고요: exn
val 합하기: 큐 * 큐 -> 큐
val 빼기: 큐 -> int list * 큐
end
|
큐 타입이 여전히 abstract type인 것을 확인할 수 있습니다. 즉, 원소 타입의 정보만(즉, 꼭 필요한 정보만) 외부로 공개하고, 큐 타입 구현에 대한 정보는 여전히 외부로 노출되지 않습니다. _________________ TheyAreAsSmartAsYouAre |
|
위로 |
|
 |
한재호 손님
|
올려짐: 2005년9월28일 6:53 주제: Re: Exercise 6에서 질문이 있습니다. |
|
|
김덕환 씀: |
다만, 다음처럼 type constraint를 사용할 수도 있다는 것을 알아두시면 좋겠습니다.
코드: |
structure _정수리스트_큐 : _큐_ where type 원소 = int list = ...
|
|
와우!, 저런 판타스틱한 방법이 있었군요!!!
어쩐지 모듈타입이 조금 불편할 것 같다는 생각이 들었었습니다.  |
|
위로 |
|
 |
손님
|
올려짐: 2005년9월28일 10:12 주제: Re: Exercise 6에서 질문이 있습니다. |
|
|
코드: |
structure _정수리스트_큐 : _큐_ where type 원소 = int list = ...
|
근데 저렇게 했더니 컴파일 에러가 나는데요 - -
'문법오류: Debug:=' 라고요. |
|
위로 |
|
 |
김덕환
가입: 2005년 8월 29일 올린 글: 190
|
올려짐: 2005년9월28일 11:00 주제: Re: Exercise 6에서 질문이 있습니다. |
|
|
Anonymous 씀: | 코드: |
structure _정수리스트_큐 : _큐_ where type 원소 = int list = ...
|
근데 저렇게 했더니 컴파일 에러가 나는데요 - -
'문법오류: Debug:=' 라고요. |
글쓰기 전에 이미 컴파일해서 잘 동작하는 것을 확인한 코드입니다. 오타가 없는지, 다른 부분에 문제가 있는 건 아닌지 다시 한 번 확인하시기 바랍니다.
@ 익명 글쓰기는 허용하지 않습니다. _________________ TheyAreAsSmartAsYouAre |
|
위로 |
|
 |
|