| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
허기홍
가입: 2007년 9월 27일 올린 글: 231
|
올려짐: 2007년9월27일 16:34 주제: 2-4에 대한 질문 입니다. |
|
|
밑에 조교님이 답변 다신것 읽어보았습니다.
첫째 질문은
숙제 메뉴얼에는 스트럭쳐 선언이 IntListQ :Queue 가 아니라 IntListQ 라고만 되어있는데
이번 숙제에서 원하는 것이 모듈타입까지 사용해서 알맞게 짜는 것인지 아니면 큐가 동작만 하게 짜면 되는지 궁금합니다.
두번째는
아래에 답변에서 element_of_int 같은 함수를 만들라고 하셨는데 캐스팅해주는 함수를 만들면 그것을 어디에서 호출해줘야하는지가 궁금합니다.
enQ(q1, element_of_int([1])) 이라고 해주어야 하나요?
IntListQ.emptyQ를 실행하면 스트럭쳐 안의 내용을 몰라서 <abstr>라고 나오는데
모든 요소에 대해서 캐스팅 함수를 다 만들어 주어야 합니까?
nML홈페이지에 있는 참고 자료를 다 뒤져보아도 여기에 대한 자세한 예제나 설명은 부족한것 같아서 도움 주시면 감사하겠습니다. |
|
| 위로 |
|
 |
오학주
가입: 2005년 9월 5일 올린 글: 118
|
올려짐: 2007년9월27일 18:43 주제: |
|
|
이번숙제에서 element_of_int 와 같은 타입을 만들라는 것은 아니구요.
모듈타입을 적용했을때 그런 함수들을 추가하여 컴파일 할 수 있다는 겁니다
테스트 하실 때 문제에 예로 나와있는대로
| 코드: |
val myQ = IntListQ.emptyQ
val yourQ = IntListQ.enQ(myQ, [1])
val (x,restQ) = IntListQ.deQ yourQ
val hisQ = IntListQ.enQ(myQ, [2]) |
이런식으로 테스트 가능하도록 작성해 주세요. 그렇지 않은 경우 자동 채점을 하지 못합니다.
이번 숙제에서는 모듈 타입을 적용하지 않아도 되구요, 다만 모듈내의 함수나 값의 이름들이 숙제에 명시된 이름과 일치하게 해 주시면 됩니다.
즉, emptyQ와 같은 값의 이름을 임의로(empty_q와 같은) 짓지 마시고 모듈 타입에 명시되어 있는 이름을 따라 주세요.
참고로 모듈타입을 적용할때 element 타입을 다음과 같이 알려주는 방법도 있습니다.
| 코드: |
signature Queue =
sig
type element
type queue
exception EMPTYQ
val emptyQ: queue
val enQ: queue * element -> queue
val deQ: queue -> element * queue
end
structure IntListQ : Queue where type element = int list =
struct
type element = int list
type queue = element * element
exception EMPTYQ
val emptyQ: queue = ([], [])
val enQ: queue * element -> queue = fn (q,e) => q
val deQ: queue -> element * queue = fn q => raise EMPTYQ
end
val myQ = IntListQ.emptyQ
val yourQ = IntListQ.enQ(myQ, [1])
|
이런식으로 모듈타입을 적용할 수 있습니다. |
|
| 위로 |
|
 |
김진산
가입: 2006년 9월 13일 올린 글: 45
|
올려짐: 2007년9월29일 21:21 주제: 급질문. ㅠ_ㅠ |
|
|
| 코드: |
structure IntListQ : Queue where type element = int list =
struct
type element = int list
type queue = element * element
exception EMPTYQ
val emptyQ: queue = ([], [])
val enQ: queue * element -> queue = fn (q,e) => q
val deQ: queue -> element * queue = fn q => raise EMPTYQ
end
|
에서
type queue = element * element
가 아니라
type queue = element list * element list
아닌가요?
예전에 질문 드린 부분인데, 답변이 조금 혼동스럽네요. ㅠ_ㅠ |
|
| 위로 |
|
 |
김진산
가입: 2006년 9월 13일 올린 글: 45
|
올려짐: 2007년9월29일 21:30 주제: 예제. |
|
|
계속 혼돈이 있는것 같아서 '문제의 사용 예제'의 결과를 올려봅니다.
(별 문제 없을 것 같지만, 조교님이 보시기에 문제가 될만하면 삭제하셔도 됩니다.
| 인용: |
# val myQ = IntListQ.emptyQ;;
val myQ: int list list * int list list = ([], [])
# val yourQ = IntListQ.enQ(myQ, [1]);;
val yourQ: int list list * int list list = ([[1]], [])
# val (x, restQ) = IntListQ.deQ yourQ;;
val x: int list = [1]
val restQ: int list list * int list list = ([], [])
# val histQ = IntListQ.enQ(myQ, [2]);;
val histQ: int list list * int list list = ([[2]], [])
|
이렇게 결과가 나오는 것이 맞는지요? |
|
| 위로 |
|
 |
|