이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
최아윤
가입: 2025년 3월 13일 올린 글: 3
|
올려짐: 2025년5월28일 17:57 주제: [숙제 7] Exercise 2 질문입니다. |
|
|
안녕하세요.
숙제 7 Exercise 2의 테스트 케이스 7번과 관련하여 질문 드립니다.
(
(fn error =>
(fn x =>
ifp x then
error 1
else
error 2
) 5
) (fn x => raise x)
) handle a a
제공된 테스트 케이스를 -pp 옵션과 함께 실행하니
== Input Program ==
((fn error => (fn x => (ifp x then
(error) (1)
else
error) (2)) (5)) (fn x => raise (x))) handle a (a)
== Running Input Program with xexp Interpreter ==
1
== Running converted program with xexp Interpreter ==
Fatal error: exception Exn.Xexp.TypeError("not a function")
와 같은 오류가 발생했습니다. 그런데 위 테스트 케이스를
(
(fn error =>
(fn x =>
ifp x then
(error 1)
else
(error 2)
) 5
) (fn x => raise x)
) handle a a
로 수정하면
== Input Program ==
((fn error => (fn x =>
ifp x then
(error) (1)
else
(error) (2)) (5)) (fn x => raise (x))) handle a (a)
== Running Input Program with xexp Interpreter ==
1
== Running converted program with xexp Interpreter ==
1
이처럼 파싱된 인풋 프로그램도 다르게 나타나고, 결과도 다르게 나타났습니다.
수정하기 전의 테스트 케이스는 ifp x ~ else 부분을 파싱이 의도된 바와 다르게 이루어지는 것 같습니다. 수정 전의 케이스에서도 Running Input Program with xexp Interpreter와 동일한 결과가 출력되어야 하는지 궁금합니다.
감사합니다. |
|
위로 |
|
 |
오규혁 Site Admin
가입: 2022년 3월 15일 올린 글: 88
|
올려짐: 2025년5월29일 11:40 주제: |
|
|
안녕하세요,
전자의 방식으로 작성하면 App ((if ... else error), 2) 방식으로 파싱이 됩니다.
올바른 프로그램이 아니지만(e1 e2에서 e1이 함수가 아닐 수 있음) 예외를 처리하는 과정에서 실행되는 경우입니다.
이런 경우는 테스트하지 않습니다.
잘못된 프로그램을 변환할때는 오류가 나는게 자연스러운 결과입니다.
조교드림 _________________ TA 오규혁
e-mail: ghoh@ropas.snu.ac.kr |
|
위로 |
|
 |
|