이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
전보영
가입: 2009년 10월 5일 올린 글: 14
|
올려짐: 2010년11월9일 22:13 주제: 6-2에 대한 질문입니다. |
|
|
수업 시간에 배운 내용으로 미루어 보아
프로그램을 실행시키기 전에 syntax만 보고 타입을 check하는 거라고 생각했었는데
뼈대 코드를 보니 M_LowFat.run에서 check를 쓰지 않네요.
eval의 구현을 채워넣는 과정에서 check함수를 사용하는 것인지,
아니면 eval함수는 6-1과 똑같이 구현하면 되는지 (M_LowFat.run에서 eval하기 전에 check를 하는 것인지) 궁금합니다. |
|
위로 |
|
|
조성근
가입: 2009년 9월 14일 올린 글: 283
|
올려짐: 2010년11월10일 9:23 주제: |
|
|
main.ml을 보시면 35-38줄이 타입 검사 옵션이 들어갔을 때 실행되는 코드입니다. 먼저 타입 검사를 하고 타입 검사가 완료되면 실행을 합니다.
코드: | print_string "== Type Checking ==\n";
M_Printer.printTypes (M_Checker.check pgm);
print_string "== Running with Low Fat M ==\n";
M_LowFat.run pgm |
여기서의 실행은 6-1에서의 실행과 다릅니다. 6-1의 eval에서는 타입이 맞지 않는 실행에 대해서 RuntimeError 예외를 발생시키며 실행이 중지합니다. 6-2의 eval에서는 타입이 맞지 않는 실행에 대해서 예외를 발생시켜주지 않아도 됩니다. 이미 정적으로 타입 검사를 마친 프로그램만 실행될테니까요. 단, read의 경우만 예외적으로 RuntimeError예외를 발생시켜 줍니다. |
|
위로 |
|
|
|