| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
성창훈
가입: 2011년 3월 9일 올린 글: 8
|
올려짐: 2011년3월25일 16:22 주제: 5번 문제 타입이요 |
|
|
IntlistQ 정의 후 타입을 보니
val emptyQ: 'a list * 'b list
val enQ: ('a list * 'b list) * 'a list -> 'a list * 'b list
val deQ: 'a list * 'a list -> 'a * ('a list * 'a list)
로 나오는데요 element랑 queue로 나와야 하는거 아닌가요?;
대충 보니까 empty queue 를 문제에서 준것처럼 빈 리스트로 해서 타입이 정의가 안되는거 같은데 이게 맞는 표현인가요?; |
|
| 위로 |
|
 |
안현주
가입: 2010년 9월 6일 올린 글: 18
|
올려짐: 2011년3월25일 17:17 주제: pdf 파일이 약간 잘못된것 같습니다. |
|
|
예전에 프원을 들을때 모듈 타입을 작성한뒤 그 타입을 따르는 모듈을 작성할때
| 코드: | module type Queue =
sig
~~~
end
module IntListQ : Queue with type element = int list =
struct
~~~
end |
이런 식으로 이 타입을 따른다고 알려줬었습니다.
pdf 파일에서 IntListQ 작성법이 약간 잘못된것 같네요. |
|
| 위로 |
|
 |
김진영_
가입: 2009년 12월 9일 올린 글: 337
|
올려짐: 2011년3월25일 17:30 주제: |
|
|
4쪽에 나온대로 빈 칸을 채워 IntListQ 모듈을 만들게 되면, element와 queue에 대해서 타입이 나오지 않습니다. 왜냐하면, 그러한 정보가 전혀 없기 때문입니다. Queue타입의 sig를 문제의 위쪽에 정의했어도 마찬가지입니다. IntListQ모듈이 Queue 타입을 가진다는 정보를 전혀 주지 않았습니다. 'a와 'b로 나타나는 것이 자연스럽습니다.
따라서 내가 만든 IntListQ 모듈이 정말로 위의 Queue 타입을 만족하는지를 확인하고 싶으면,
| 코드: | | module IntListQ : Queue = struct ... end |
로 정의하면 됩니다. 내가 만든 IntListQ 모듈이 Queue 타입이라는 것을 알려 주는 것입니다. 문제없이 동작한다면 Queue 타입의 모듈을 문제없이 작성한 것이 되겠죠?
하지만 이 경우 4쪽의 아래의 예시에 나온 대로 큐를 만들어나가는 것은 불가능합니다. 왜냐하면 모듈 타입 Queue는 큐의 원소 타입 element가 무엇인지를 알려주지 않기 때문입니다. 이는 우리가 모듈 IntListQ 내부에서 작성한 것으로 밖에서는 알 수 없습니다. 따라서
| 코드: | | let yourQ = IntListQ.enQ(myQ, [1]) |
에서 [1]과 같은 인자를 넘길 수 없습니다.
이를 해결하려면 아래와 같이
| 코드: | | module IntListQ : Queue with type element = int list = struct ... end |
명시적으로 모듈 타입 Queue 아래에서의 타입 element가 무엇인지를 알려 주면 됩니다. 그러면 이제는 IntListQ의 element 타입이 정수 리스트라는 것을 외부에도 알리게 되는 것입니다.
요약하면,
1. 질문하신 상황에서는 element랑 queue로 나오지 않는 것이 맞고요,
2. 타입에 맞게 잘 정의했는지 확인하시려면 IntListQ : Queue 로 테스트 해 보시고요,
3. element가 정수 리스트인지 with를 이용해 알려 주시고 테스트하셔야 할 겁니다. |
|
| 위로 |
|
 |
안현주
가입: 2010년 9월 6일 올린 글: 18
|
올려짐: 2011년3월25일 17:33 주제: |
|
|
| 그럼 제출할 때는 ": Queue with type ~~"을 빼고 a' list 등으로 나오게해야 하나요? |
|
| 위로 |
|
 |
김진영_
가입: 2009년 12월 9일 올린 글: 337
|
올려짐: 2011년3월25일 17:34 주제: |
|
|
넣으셔도 되고 넣지 않으셔도 됩니다.
단 넣었을 때 잘 동작해야 합니다. 문제에서 Queue 타입의 모듈을 작성하라고 했었으니까요.  |
|
| 위로 |
|
 |
안현주
가입: 2010년 9월 6일 올린 글: 18
|
올려짐: 2011년3월25일 17:36 주제: |
|
|
제가 글쓴이가 아닌데 계속 질문을 해버렸군요 ㅠ
감사합니다 ㅎㅎ |
|
| 위로 |
|
 |
성창훈
가입: 2011년 3월 9일 올린 글: 8
|
올려짐: 2011년3월25일 18:15 주제: |
|
|
| 궁금증 해결해 주셔서 감사합니당~ |
|
| 위로 |
|
 |
|