| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
06김주성
가입: 2008년 9월 26일 올린 글: 13
|
올려짐: 2008년9월28일 15:22 주제: 2-6번에 대한 질문입니다 ^^ |
|
|
스펙에 보면
structure IntListQ =
struct
type element = int list
type queue = ...
exception EMPTY Q
val emptyQ = ...
val enQ = fn ...
val deQ = fn ...
end
라고 되어있어서
structure는 signature와 아무런 연관이 없는것으로 선언이 되어있는데
이것을 적절히 고쳐서 IntListQ가 element가 IntList인 Queue라는 것을
명시 해줘야 하나요? 아니면 저 위에 그대로에서
enQ와 deQ만 짜면되는것인가요? |
|
| 위로 |
|
 |
최원태
가입: 2006년 9월 16일 올린 글: 369
|
올려짐: 2008년9월29일 8:37 주제: |
|
|
signature는 structure의 type이란건 이해하고 계시죠?
A signature를 만들고, 그 조건을 만족하는 B structure를 별도로 만들면
ML의 타입시스템이 알아서 정말로 동일한지 계산해줍니다.
동일하다고 판별되면 A signature를 가진 무언가가 필요한 자리에
B가 들어갈 수 있게 되는 거죠.
이런 소인배같은 코드는 필요없다는 말이죠.
훌륭하지요?
이 structure가 어느 signature type을 가지는지 명시하지 않으면
내부 타입구현이 보이긴 하지만 신경쓰지 않아도 됩니다. |
|
| 위로 |
|
 |
조강원
가입: 2008년 9월 2일 올린 글: 9
|
올려짐: 2008년9월29일 23:21 주제: |
|
|
| 최원태 씀: | 이 structure가 어느 signature type을 가지는지 명시하지 않으면
내부 타입구현이 보이긴 하지만 신경쓰지 않아도 됩니다. |
어떤 structure가, 특정 signature type에 해당하는지를 테스트해 볼 수 있는 방법은 없나요?
제가 만든 IntListQ structure가 Queue signature에 해당하는지 알아보고 싶은데 이것저것 시도해 봐도 마땅한 방법이 안 보이네요.;; |
|
| 위로 |
|
 |
최준원
가입: 2007년 3월 30일 올린 글: 149
|
올려짐: 2008년9월30일 1:15 주제: 콜론(:)으로 시그너처를 지정할 수 있습니다. |
|
|
| 인용: | | 어떤 structure가, 특정 signature type에 해당하는지를 테스트해 볼 수 있는 방법은 없나요? |
콜론 ":" 으로 구조물의 시그너처를 지정할 수 있습니다.
signature A = sig ... end
structure B:A = struct ... end
특정 시그너처 타입에 해당하지 않는다면 에러를 내게 됩니다.
콜론을 이용해서 시그너처를 지정하면 시그너처로 지정된 타입, 변수, 함수 등은 모두 abstraction level 의 하위 부분으로 가려지게 됩니다.
structure B:A where ... = struct ... end
를 사용하면 signature 에서는 정의되지 않았지만 structure B 에서 정의된 내용을 미리 선언할 수 있습니다~
말주변이 짧아서 정확한 정의를 설명하기가 어렵네요 'ㅡ';;;;
정확한 설명을 아시는 분이 아래에 추가적으로 달아주셨으면 좋겠어요  |
|
| 위로 |
|
 |
|