게시판 인덱스

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

ex2-4 질문

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



가입: 2024년 3월 4일
올린 글: 10

올리기올려짐: 2024년3월18일 22:57    주제: ex2-4 질문 인용과 함께 답변

안녕하세요.

ex2-4의 문제에 나와 있는 대로 Queue를 정의하고 IntListQ를 구현했습니다.

그런데 문제에 나와 있는

코드:

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


이 코드를 실행하려고 하면 [1]이 IntListQ.element가 아니라 그냥 int list로 해석되어 다음과 같은 에러가 발생하게 됩니다.
Error: This expression has type 'a list but an expression was expected of type
IntListQ.element

검색을 해봤더니 테스트 코드를 아래와 같이 작성하면 해결할 수 있다는 말이 있었습니다.

코드:

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


그러나 이렇게 작성해도 변수 e를 만드는 부분에서 역시 동일한 에러가 발생합니다. 문제 해결을 도와주실 수 있을까요?
위로
사용자 정보 보기 비밀 메시지 보내기
이재호
Site Admin


가입: 2022년 3월 6일
올린 글: 209

올리기올려짐: 2024년3월19일 11:44    주제: 인용과 함께 답변

안녕하세요,

올바르게 구현하면 해당 에러는 발생하지 않고 타입 검사기를 통과해야합니다.

에러 메시지로 유추해보자면, 학생 분의 코드에서 IntListQ.element의 타입을 다시 확인해보시기 바랍니다. 문제에서
인용:
예를들어: module IntListQ (...)는 정수 리스트를 큐의 원소로 가지는 경우겠지요.

다른 문제일수도 있지만, 다시 한 번 검토해보시면 문제 해결에 도움이 될 것 같습니다.

조교 드림

감사합니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이영훈



가입: 2024년 3월 20일
올린 글: 1

올리기올려짐: 2024년3월20일 2:30    주제: Re: ex2-4 질문 인용과 함께 답변

seongtae_jeong 씀:
안녕하세요.

ex2-4의 문제에 나와 있는 대로 Queue를 정의하고 IntListQ를 구현했습니다.

그런데 문제에 나와 있는

코드:

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


이 코드를 실행하려고 하면 [1]이 IntListQ.element가 아니라 그냥 int list로 해석되어 다음과 같은 에러가 발생하게 됩니다.
Error: This expression has type 'a list but an expression was expected of type
IntListQ.element

검색을 해봤더니 테스트 코드를 아래와 같이 작성하면 해결할 수 있다는 말이 있었습니다.

코드:

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


그러나 이렇게 작성해도 변수 e를 만드는 부분에서 역시 동일한 에러가 발생합니다. 문제 해결을 도와주실 수 있을까요?


IntListQ 를 정의할 때 ': Queue'를 붙이면 이런 문제가 생기는 것 같습니다.
저도 같은 문제를 겪었는데, 이를 지우니까 정상적으로 표시되었습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이재호
Site Admin


가입: 2022년 3월 6일
올린 글: 209

올리기올려짐: 2024년3월20일 8:42    주제: 인용과 함께 답변

해당 에러 메시지가 이렇게 작성하여도 나올 수 있군요! 공유해주셔서 감사합니다.
일단은 숙제 코드에 나온 것과 같이 작성하면 문제가 발생하지는 않습니다.

궁금하신 분들을 위해 부연 설명을 드리자면요,
코드:

module IntListQ : Queue = struct ... end

라는 것은
"`IntListQ`는 `Queue`이고, 어떻게 구현했는지 속 내용은 알 필요 없어. 대신 이러이러한 타입이랑 값들이 들어 있어"
이라는 말입니다.
`type element = int list`라는 것도 나중에 `IntListQ`가 바꿀 수 있는 구현 세부사항이며, 밖에서는 이에 의존하면 안 됩니다.
마치 함수 내용물이 겉으로 드러나지 않는 것과 같은 맥락입니다.

만약 밖에 `type element = int list`라는 세부사항을 직접 드러내기 위해서는
코드:

module IntListQ : Queue with type element = int list = struct ... end

와 같이 작성할 수 있습니다.
UTop 등에서 전자와 후자와 같이 구현한 후 출력되는 signature를 비교해보면 어떻게 달라지는지 확인해보시면 도움이 될 것 같습니다.

물론, 본 숙제에서는 `: Queue`를 떼고 제출해주시면 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2024) 시간대: GMT + 9 시간(한국)
페이지 11

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


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