이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
민세원
가입: 2015년 9월 17일 올린 글: 10
|
올려짐: 2015년11월25일 23:50 주제: 7-1질문입니다 |
|
|
안녕하세요 조교님
xexp.ml에 있는 value타입과 eval함수를 과제파일에서 사용할 수 있나요?
만약 사용할 수 없는데 eval을 하고 싶으면 과제파일에서 직접 구현하여야 하나요? |
|
위로 |
|
|
최재승
가입: 2012년 9월 10일 올린 글: 211
|
올려짐: 2015년11월26일 0:36 주제: |
|
|
안녕하세요,
value 타입이나 eval 함수를 사용하셔서는 안 되며, 직접 구현해서 사용하는 것도 허용하지 않습니다.
프로그램을 미리 실행해서 그 결과를 살펴보는 것을 허용한다면, 극단적으로 프로그램 전체를 실행해서 나온 정수 결과값으로 프로그램을 번역하면 될 것입니다. (예 : 프로그램을 실행해 보고, 정수 n이 나오면 "Num n"으로 번역)
이런 방식이 가능한 것은 xexp 프로그램이 사용자와 입출력을 주고받지 않으며 항상 같은 결과를 내놓기 때문입니다. 언어에 입출력 요소가 들어가면 이런 방식은 통하지 않으며, 프로그램을 실행해보지 않고 번역해야만 합니다.
xexp 언어에는 입출력 요소가 없지만, 과제의 목표는 예외 처리 설탕을 녹이는 일반적인 방법을 배우는 것이므로 프로그램을 실행해보지 않고 번역하는 방법을 고민해 보시기 바랍니다.
조교 드림 |
|
위로 |
|
|
민세원
가입: 2015년 9월 17일 올린 글: 10
|
올려짐: 2015년11월26일 1:20 주제: |
|
|
조교님 답변 감사합니다.
그럼
( ( (raise (App (Fn x x) 2) handle 2 E1) handle 3 E2
이 경우에는 결과가 어떻게나와야 하나요? |
|
위로 |
|
|
최재승
가입: 2012년 9월 10일 올린 글: 211
|
올려짐: 2015년11월26일 10:06 주제: |
|
|
((raise ((fn x =>x) 2)) handle 2 E1) handle 3 E2
우선 (raise ((fn x =>x) 2)) 부분을 실행하면 예외 "2"가 발생하므로 예외 핸들러인 E1이 실행될 것입니다. E1을 계산할때 -
(1) 예외 "3"이 발생하면 : 전체 프로그램의 실행결과는 E2를 실행한 결과가 됩니다.
(2) 그 외의 예외가 발생하면 : 처리되지 않은 예외이므로 비정상 종료합니다.
(3) 예외가 발생하지 않고 값이 계산되면 : 전체 프로그램의 실행결과는 그 값이 됩니다.
조교 드림 |
|
위로 |
|
|
|