게시판 인덱스

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

2-4에 대한 질문 입니다.

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



가입: 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 와 같은 타입을 만들라는 것은 아니구요.
모듈타입을 적용했을때 그런 함수들을 추가하여 컴파일 할 수 있다는 겁니다Smile

테스트 하실 때 문제에 예로 나와있는대로
코드:

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

아닌가요?


예전에 질문 드린 부분인데, 답변이 조금 혼동스럽네요. ㅠ_ㅠ
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문 MSN 메신저
김진산



가입: 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]], [])


이렇게 결과가 나오는 것이 맞는지요?
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문 MSN 메신저
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2007) 시간대: GMT + 9 시간(한국)
페이지 11

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


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