박준호
가입: 2012년 9월 15일 올린 글: 71
|
올려짐: 2012년12월4일 23:33 주제: 8-3 질문입니다 |
|
|
1. 8-3의 모듈이 집합큐 모듈함수라고 했으니까 QueueMake에서는 enq함수를 실행할 때 내부에 동일한(의미를 가지는) 큐가 이미 있는지 확인할텐데요,
Queue(3::2::1::[],[])과 Queue([],1::2::3::[])은 같은 동작을 하잖아요.
그런데, = 연산자는 구조가 같은지 보는함수라서 위 함수가 같다고 체크를 못합니다.
그러면 이러한 두 '구조는 다르지만 의미가 같은 큐'가 정말로 같은지 체크해주는 함수가 필요한데요, 8-2 과제에서는 임의대로 q_equal같은 함수를 만들어서 리스트를 체크해하는데, 여기서(StringSetQQ내부에서) StringSetQ.deq를 이용합니다.
그런데 8-3에서는 StringSetQ.deq같이 사용못하잖아요
(왜냐면 저걸 쓰려면 module StringSetQ = QueueMake(...)로 만들어야하니;
그럼 아예 QueueMake안에서 q_equal = (string list * string list) * (string list * string list) -> bool 로 '어떤 타입이 들어올지 예상하고' 만들어야하나요???
이렇게되면 뭔가...엄청 비효율적인것같아서요.
2. 저렇게 짠다고 해도 함수의 인자로는 element라는 타입으로 숨겨져 들어올텐데 element가 같은지 알고싶을때 = 를 쓸지 q_equal을 쓸지 어떻게 선택적으로 하나요? |
|