| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
최정원
가입: 2025년 3월 22일 올린 글: 32
|
올려짐: 2026년6월1일 14:18 주제: [숙제 7] 질문 |
|
|
안녕하세요, 제출 기한을 넘었지만 아직 늦은 제출 기한은 남아 네 번째 exercise에 대해 여쭤봅니다.
1. 프로그램 중 단순히 1혹은 "text" 처럼 변수 없이 하나의 타입만 들어 있는 것들도 가능할 것 같습니다.
이 경우, 타입 체커에는 M.CONST c 하나의 expression만 들어갈 것 같은데, 이때도 infer 할 type variable을 새로 만들어서 확인하여 돌려주는 과정을 거쳐야 하나요, 그냥 int, string을 바로 돌려줘도 되나요?
M 안내문에는 int, bool, string은 e : tau 와 같은 constraint가 없어 굳이 위의 과정을 거치는 것은 필요하지 않을 것 같아 확인부탁드려요.
2. ty type에 새로운 타입을 넣는 것이 가능한가요?
3. 어떤 순서로 확인하는 타입 체커를 만들었느냐에 따라, 타입을 먼저 돌려주고 타입 에러를 내는 경우도 존재할 것 같은데, 이 경우는 잘못된 결과라고 판단될까요? |
|
| 위로 |
|
 |
안중원 Site Admin
가입: 2023년 3월 13일 올린 글: 90
|
올려짐: 2026년6월1일 16:26 주제: |
|
|
안녕하세요, 프로그래밍 언어 조교 안중원입니다.
1. 타입 추론 알고리즘의 세부 실행방식에 대해 특별한 제한을 두고 있는 것은 아닙니다. 프로그램을 직접 실행한다든지 하는 트릭에 대해서만 제한을 두고 있습니다.
2. simple_checker 안의 정의들은 자유롭게 바꾸어도 됩니다. 이는 스켈레톤 코드의 주석에도 안내되어있는 내용입니다. simple_checker.mli에 적혀있는 check 함수의 타입만 잘 맞춰주시면 됩니다.
3. 전체 식의 타입 체크를 돌렸을 때 정확한 타입이 나오거나 타입 에러가 나오거나 둘 중의 하나의 결과로 올바르게 떨어지면 됩니다.
감사합니다. _________________ TA 안중원
e-mail: jwahn@ropas.snu.ac.kr |
|
| 위로 |
|
 |
최정원
가입: 2025년 3월 22일 올린 글: 32
|
올려짐: 2026년6월1일 16:46 주제: |
|
|
답변 감사합니다!
궁금한 것이 더 생겼는데, 공지에 function type을 돌려주는 입력은 들어오지 않는다 말씀하신 것에 대해, 그렇다면 M.TyArrow 가 결과로 나오는 경우는 없는 것인가요? Apply의 경우 무조건 함수에 입력을 적용하는 형식이라, apply나 function이 결과를 돌려주지 않고 남아있으면 함수가 남아있는 것과 동일한 것은 아닌 것인지 여쭤보고 싶습니다.
ty를 통해 type infer을 하고 check에는 ty를 최종적으로 M.TySomething 으로 바꾸어 돌려주는 방식을 쓴다면, M.TyArrow 형태로 번역되는 가능성은 배제해도 되는지 알고 싶습니다. |
|
| 위로 |
|
 |
안중원 Site Admin
가입: 2023년 3월 13일 올린 글: 90
|
올려짐: 2026년6월2일 9:13 주제: |
|
|
마지막에 말씀하신 방식이 숙제에서 의도한 것입니다. simple_checker.ml 내부에서만 사용하는 ty 등을 사용하여 타입검사한 후, 전체 식의 타입만 M.typ으로 변환하여 리턴하면 됩니다.
답변이 늦었지만 잘 구현하셨으리라 생각합니다.
감사합니다. _________________ TA 안중원
e-mail: jwahn@ropas.snu.ac.kr |
|
| 위로 |
|
 |
|