이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
강인재
가입: 2017년 9월 14일 올린 글: 9
|
올려짐: 2017년9월20일 22:11 주제: 과제 2-7 질문 |
|
|
과제 2-6의 뼈대코드에서는 모듈을 정의할 때
module type Queue에서 type 이름만 써 주고
module IntListQ 에서 그 타입을 지정해 주었는데
과제 2-7에서는 module type ZEXPR에서 타입을 지정해 주도록 뼈대 코드가 나와 있네요
왜 차이가 나는지 궁금합니다.
위에서 정해 주었다고 생각해서 struct에서는 type expr만 써 주고
NUM을 사용하려고 하니 unbound되었다고 에러가 뜨네요
밑에도 똑같이 써 줘야 하나요? |
|
위로 |
|
|
김성국17
가입: 2017년 9월 15일 올린 글: 16
|
올려짐: 2017년9월22일 12:27 주제: |
|
|
struct .. end 로 정의하는 module은 말그대로 값이나 타입의 정의들을 갖고있는 모듈의 구현입니다.
sig .. end는 signature 또는 module interface는 구현된 모듈의 내부 공개 범위를 한정시킬 수 있는 마스크라고 보시면 됩니다. (+ 이것들은 필수적으로 구현해줘야 한다는 명시)
2-7에서 type expr = ...가 sig .. end안에 써있는 것은, ZEXPR이라는 signature로 Zexpr라는 module을 마스크 해도 type expr의 내부 구현을 보이게 하기 위함일 뿐입니다.
별도로 Zexpr 모듈 안에서도 구현을 해줘야 합니다.(똑같이 쓰면 됩니다.) |
|
위로 |
|
|
|