게시판 인덱스

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

7-1 질문

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



가입: 2017년 9월 6일
올린 글: 2

올리기올려짐: 2017년12월8일 16:26    주제: 7-1 질문 인용과 함께 답변

과제 7-1에

코드:
let check : M.exp -> M.typ =


로 되어있는데 M.typ은 이렇게 정의되어있습니다

코드:
  (* type in M  *)
  type typ = TyInt                      (* integer type *)
             | TyBool                   (* boolean type *)
             | TyString                 (* string type *)
             | TyPair of typ * typ      (* pair type *)
             | TyLoc of typ             (* location type *)


그럼 poly_checker.ml 에 있는

코드:
type typ =
  | TInt
  | TBool
  | TString
  | TPair of typ * typ
  | TLoc of typ
  | TFun of typ * typ
  | TVar of var
  (* Modify, or add more if needed *)


은 사용하면 안되는건가요?

poly_checker 에 있는 typ 을 바꾸라고 되어있는데 TInt, TBool 을 check 에 쓰면 compile error 가 뜨네요.

제가 문제를 잘못이해하고 있는건가요?
위로
사용자 정보 보기 비밀 메시지 보내기
김성국17



가입: 2017년 9월 15일
올린 글: 16

올리기올려짐: 2017년12월8일 21:02    주제: 인용과 함께 답변

M.typ 은 타입 추론의 결과물이고,

추론 과정 중에 실질적으로 사용하는 것은 Poly_checker.typ 으로 보입니다.


또, 바꾸라는 것은 꼭 바꿔야 된다가 아니라 타입추론에 필요하다면 새로운 타입을 변경/추가 가능하다는 의미같습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
신원준



가입: 2017년 9월 12일
올린 글: 23

올리기올려짐: 2017년12월13일 5:02    주제: 인용과 함께 답변

poly_checker.ml 안에 있는 타입만 다루면서 타입체크 하시면 되고,

리턴은 m.ml에 있는 타입으로 리턴해야 하므로 이를테면 다음과 같이 짜면 됩니다. (마지막에 최종 결과 타입만 변경하면 되죠)

코드:

let rec typeConv : typ -> M.typ = function
  | TInt -> M.TyInt
  | TBool -> M.TyBool
  | TString -> M.TyString
  | TPair (t1, t2) -> M.TyPair (typeConv t1, typeConv t2)
  | TLoc (t) -> M.TyLoc (typeConv t)
  | _ -> raise (M.TypeError "invalid result type")
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2017) 시간대: GMT + 9 시간(한국)
페이지 11

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


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