이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김선준
가입: 2021년 3월 8일 올린 글: 9
|
올려짐: 2021년6월9일 19:31 주제: 숙제 8 관련 질문 |
|
|
안녕하세요.
let-polymorphic type system 관련 수업 슬라이드에서는
input으로 expression을 받고 그 expression을 실행하는 도중에 memory를 할당할 여부를
conservative하게 판단해서 bool을 output으로 내보내는 "expansive"라는 함수를 정의하여
let x = E in E' 의 expression에서 (expansive E) 가 true인 경우 generalize를 하지 않도록 하는 방식을 소개하고 있습니다.
한편 이와 같이 구현할 경우 safe하긴 하지만, public test case로 주어진 다음과 같은 경우에서도 type error를 내보내는 incomplete한 모습을 보이게 됩니다. (test23.m)
인용: |
let rec f = fn x => malloc (fn x => x) in (* This does not invoke malloc *)
write ((!(f 10)) true); write ((!(f true)) "hello")
end
|
숙제 8에서는 어느 정도로 완전한 type checker를 구현해야 하는 것인지 궁금합니다. public test case에 대해서 올바른 결과를 내는 정도면 되는 것인가요? |
|
위로 |
|
|
김선준
가입: 2021년 3월 8일 올린 글: 9
|
올려짐: 2021년6월9일 22:14 주제: . |
|
|
추가로, 다음과 같은 경우에 대해서는 어떤 type checking 결과를 내는 것이 이번 과제에서 요구하는 스펙인가요?
인용: |
let val f = malloc (fn x => x) in
f := (fn x => (x, x));
(!f) true
end
|
|
|
위로 |
|
|
shkim
가입: 2019년 7월 30일 올린 글: 86
|
올려짐: 2021년6월10일 18:05 주제: |
|
|
test23.m의 경우가 E에서 실행중 메모리 주소를 할당받는 경우인지 확인해보시기 바랍니다.
코드 주석으로 달려있듯, 메모리를 할당하는 함수의 선언 그 자체로 메모리 할당이 일어나지는 않습니다.
교재 191p를 참고하시면 도움이 될 것 같습니다.
(추가로 질문해주신 내용 또한 답변이 되었을 것 같습니다)
숙제8의 구현은 수업시간에 배운 let-다형 타입 시스템을 충실히 구현해 주세요.
그러면 제공된 테스트 케이스 및 채점 테스트 케이스 통과에 문제가 없을 것입니다. |
|
위로 |
|
|
김선준
가입: 2021년 3월 8일 올린 글: 9
|
올려짐: 2021년6월10일 18:45 주제: . |
|
|
답변 감사합니다! |
|
위로 |
|
|
|