게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

HW2 Exercise 6에서 모듈 관련 질문

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2022)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
양주현



가입: 2022년 3월 18일
올린 글: 5

올리기올려짐: 2022년3월23일 12:57    주제: HW2 Exercise 6에서 모듈 관련 질문 인용과 함께 답변

공지사항에서

코드:
module ValidIntListQ = (IntListQ : Queue)


를 한번 선언해 봐서 에러가 나는지 안나는지로 IntListQ가 Queue 타입의 모듈이 맞는지 확인하라고 말씀해 주셨습니다.

여기서 궁금한 점은

코드:
module type Queue =
        sig
                type element
                type queue
                ....
                val enQ : queue * element -> queue
                ....
        end


코드:
module IntListQ =
        struct
                type element = int list
                type queue = (* 구체적인 구현 *)
                ...
                 let enQ : queue*element -> queue= (* 구체적인 구현 *)
        end


이 상태에서는 IntListQ가 Queue 타입이라고 명시적으로 되어 있지 않고, Queue 모듈의 구현 부분은 지워도 사실상 아무 상관이 없습니다.

코드:
module IntListQ :  Queue =
        struct
                type element = int list
                type queue = (* 구체적인 구현 *)
                ...
                 let enQ : queue*element -> queue= (* 구체적인 구현 *)
        end


위의 코드처럼 IntListQ의 타입을 : Queue 로 직접 지정해 보면

코드:
let myQ = IntListQ.emptyQ
let yourQ = IntListQ.enQ(myQ, [1])


여기서 [1]이 IntListQ.element가 아니라서 오류가 납니다.

코드:
let myQ = IntListQ.emptyQ
let yourQ = IntListQ.enQ(myQ, IntListQ.element [1])


이렇게 하면 될 줄 알았는데 안 됩니다. 찾아 보니 element는 abstract type이라서 저런 식으로는 못 쓴다고 나와 있습니다.

이런 식으로 모듈을 특정 타입을 만족하도록 명시적으로 정의해서 사용할 수는 없는 건가요?

StringListQ, CharListQ 등 Queue 타입의 모듈을 여러 개 더 만들 때, 일일히

코드:
module ValidSomeListQ = (SomeListQ : Queue)


로 확인해 주는 것이 상당히 어색하고 부자연스럽게 느껴지는데, 모듈을 struct~end로 짤 때부터 Queue 타입이 되도록 짜는 방법은 없나요?

감사합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
김훈



가입: 2021년 4월 17일
올린 글: 9

올리기올려짐: 2022년3월23일 17:28    주제: 인용과 함께 답변

안녕하세요,

말씀해주신 것처럼 element가 abstract type이라 IntListQ: Queue로 작성하는 방법은 힘들 것 같습니다.
과제의 메뉴얼을 그대로 따라가시는 걸 권장드려야 할 것 같네요.

감사합니다,
김훈 올림.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2022) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay