게시판 인덱스

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

숙제 7이 나왔습니다.(1206 추가 : 배점이 변경되었습니다.)

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2017)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
이동권



가입: 2012년 9월 9일
올린 글: 191

올리기올려짐: 2017년12월5일 21:26    주제: 숙제 7이 나왔습니다.(1206 추가 : 배점이 변경되었습니다.) 인용과 함께 답변

안녕하세요 수강생 여러분

숙제 7이 나왔습니다.

내용 : http://ropas.snu.ac.kr/~kwang/4190.310/17/hw7.pdf
제출 : http://ropas.snu.ac.kr/~ta/4190.310/17/submit/index.pl
프로그램 과제 기한 : 12/14 (목) 밤 12시
리포트 과제 기한 : 12/14(목) 2시(수업시간에 제출)

* 과제 관련 주의 사항
과제를 하고 제출하기에 앞서 꼭 https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=5853 글의 주의사항을 확인해 주세요.

*2,3번 문제 선택사항
숙제 문서에 언급된 대로 2,3번 문제 중 하나만을 풀어서 제출하시면 됩니다.(코딩과제 2개를 제출페이지에 제출하시거나, 코딩과제 1개를 제출페이지에 제출하시고 리포트 1개를 제출하시거나 하면 됩니다.) 물론 둘다 제출하셔도 되고요. 점수는 숙제4번때와 마찬가지로 둘중 더 높은 점수만 최종성적에 반영하겠습니다.

(1206 추가)
2, 3번 문제의 배점이 변경되었습니다. 두 문제 모두 60점으로 동일하게 맞추어졌으며, 더 높은 점수의 숙제만이 반영된다는 사실은 여전히 동일합니다.



* 숙제 스펙 보충사항
(질문은 이 글에 답글로 달지 마시고, 별도의 글로 질문해 주시기 바랍니다)

------------

Exercise 1 "저지방 고단백 M"

- 뼈대코드 : http://ropas.snu.ac.kr/~ta/4190.310/17/document/Type_skel.zip
- M 언어의 스펙 문서 : http://ropas.snu.ac.kr/~kwang/4190.310/14/M.pdf
- 뼈대코드의 poly_checker.ml 파일의 check 함수를 완성하여 제출합니다. check 함수는 입력으로 들어온 프로그램의 타입을 유추하여, m.ml 파일에 정의된 M.typ 타입으로 리턴해야 합니다.
타입 추론에 실패할 경우, m.ml 파일에 정의된 M.TypeError 예외를 발생시켜 주세요. (예외의 인자로 쓸 문자열은 자유롭게 정하시면 됩니다.)
- 뼈대코드에 몇몇 타입 정의와 함수를 제공합니다. 입맛에 따라 자유롭게 수정하여 활용하시기 바랍니다.
- M 언어의 스펙 문서에 나와 있듯이, 입력으로는 "non-function type expression"만 들어옵니다.
- 프로그램을 실행해 보고 결과를 관찰하여 답을 내놓는다거나 하는 방법은 금지입니다. 재작년 웹보드에 이와 관련된 글이 있으니 참고해주세요. (https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=5178)

프로그램의 최종 타입이, m.ml 파일에 선언된 typ 타입으로 표현할 수 없는 경우는 입력으로 테스트하지 않을 것입니다. typ 타입에는 함수 타입을 표현하는 constructor가 없으므로, 다음과 같은 프로그램은 입력으로 넣지 않겠습니다.

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



------------

Exercise 2 "점프마저 설탕"

- 뼈대코드 : http://ropas.snu.ac.kr/~ta/4190.310/17/document/Exn_skel.zip
- 뼈대코드에는 xexp의 언어정의, 파서 및 실행기가 제공됩니다. 뼈대코드 디렉토리에서 make 명령을 실행하시면 숙제 전체가 컴파일되고, 'run' 이라는 실행파일이 생성됩니다.
run 파일을 다음과 같이 실행하시면 입력으로 받은 xexp 프로그램을 여러분이 작성한 removeExn 함수를 사용해서 변환한 다음 실행합니다.
변환된 프로그램에 raise/handle 설탕 문법구조가 남아있다면 에러 메시지도 같이 출력해 줍니다.
코드:
$ make
$ ./run examples/test1.xexp

- 그 외에, -pdesug 옵션을 주어, 변환된(desugared) 프로그램을 출력해 볼 수도 있습니다. 자세한 것은 README 파일을 참고하시기 바랍니다.
- 파서가 let x = E1 in E2 표현을 지원합니다. 이 표현은,
코드:
App (Fn (x, E2), E1)

으로 자동으로 변환되므로, 언어 정의는 변하지 않으며 여러분이 작성한 removeExn에도 영향이 없습니다. 예제 코드를 쉽게 작성할 수 있도록 지원해 드리는 syntactic sugar입니다.


- 뼈대코드 중 desuagr.ml 의 removeExn 함수를 구현한 다음, desugar.ml 파일을 제출합니다. 꼭 주의해 주세요, 엉뚱한 ml 파일을 잘못 제출하시면 해결해 드릴 방법이 없습니다.

- Equal(e1, e2) 과 App (e1, e2) 에서 계산 순서는 e1이 먼저인 것으로 정합니다. 따라서 e1에서 예외가 발생하면 e2는 예외가 발생하든 에러(타입 에러, unbound 변수 등)가 발생하든 무시되어야 합니다.
Handle(e1, n, e2)의 계산 순서는 hw7.pdf 문서에 자세히 나와있습니다.

- 프로그램을 실행해 보고 그 결과를 관찰하여 번역하는 것은 허용하지 않습니다. 1번 문제에서 링크해드린 관련 글을 참고해주세요.

- 중요 : 처리되지 않은 예외 (unhandled exception)이 발생하는 프로그램도 입력으로 들어올 수 있습니다. hw7.pdf문서에서 ’이 과정으로 예외상황 처리식을 찾지못하면 프로그램 실행은 갑작스럽게 멈춘다’에 해당하는 경우로서, 이런 경우 201712 라는 magic number를 계산하고 종료되는 것으로 구현해주시면 됩니다. 예를들어 처리되지 않는 예외가 발생하는 프로그램 e에 대해 eval(removeExn(x))는 항상 201712가 될 것입니다.

------------

Exercise 3 "람다 예보"

------------[/quote]
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 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