게시판 인덱스

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

8-1 입력 질문입니다.

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



가입: 2014년 12월 25일
올린 글: 3

올리기올려짐: 2015년12월14일 16:38    주제: 8-1 입력 질문입니다. 인용과 함께 답변

8-1 테스트 할때 다음과 같은 유형의 인풋이 들어올 수 있는지 궁금합니다.
작성자 이름이 아이디로 되어있어서 죄송합니다. 최성호 입니다.

(1)
let val x = 2 in
y
end

(2)
let val x = 2 in
let val x = 3 in
x
end
end
위로
사용자 정보 보기 비밀 메시지 보내기
ch7457



가입: 2014년 12월 25일
올린 글: 3

올리기올려짐: 2015년12월14일 19:37    주제: 이런 인풋도 가능한가요? 인용과 함께 답변

이런 인풋도 가능한가요?

let val f = fn x => x in
let val y = fn x => x in
(f 1) + (y "x")
end
end
위로
사용자 정보 보기 비밀 메시지 보내기
최재승



가입: 2012년 9월 10일
올린 글: 211

올리기올려짐: 2015년12월14일 21:52    주제: 인용과 함께 답변

안녕하세요.

기본적으로, 수업 자료에 나와 있는 타입 추론 알고리즘 (offline 알고리즘, M, W 등) 을 기준으로 생각하시면 됩니다. 기본적으로 타입체커는 안전(sound)해야 하며, 이 알고리즘들만큼 완전(complete)해야 합니다.


코드:
let val x = 2 in
let val x = 3 in
x
end
end

입력으로 들어올 수 있고, 정수 타입으로 체킹되어야 합니다.

코드:
let val f = fn x => x in
let val y = fn x => x in
(f 1) + (y "x")
end
end

입력으로 들어올 수 있고, 정수에 문자열을 더하므로 타입 에러입니다. (y "x") 대신 (y 3) 이면 정수 타입으로 타입체킹 되어야 합니다.

코드:
let val x = 2 in
y
end

Unbound variable이 사용되는 프로그램입니다. 이러한 프로그램을 잡아내는 것이 타입 체커의 핵심은 아니기 때문에 테스트케이스로 드리지는 않았습니다.
하지만 M이나 W 알고리즘 등을 충실히 구현했다면, 타입 추론 과정에서 unbound variable이 사용됨을 미리 파악할 수 있습니다.
따라서 이러한 프로그램도 입력으로 들어올 수 있는 것으로 하겠으며, 이 때도 TypeError 예외를 발생시키는 것으로 하겠습니다.
(Unbound variable을 위한 별도의 예외를 스펙으로 제공해 드렸으면 좋았겠지만, 듀가 얼마 남지 않았으므로 스펙은 바꾸지 않겠습니다. 그냥 TypeError 예외를 발생시켜 주시기 바랍니다.)

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

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


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