이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김성준
가입: 2009년 9월 10일 올린 글: 30
|
올려짐: 2009년11월3일 3:09 주제: hw 5-3 무한 루프를 도는(종료되지 않는) M0 프로그램은 번역하지 않아도 되나요? |
|
|
1. 문제에서는 자연수를 최종적으로 계산하는 프로그램으로 제한한다고 되어 있습니다. 무한 루프를 도는 프로그램은 어떤 값도 계산하지 않으므로, 이런 프로그램은 입력으로 들어오지 않는다고 가정해도 되나요?
(fn arg => 3)(rec rec_fn arg => rec_fn 0)
이렇게 인자가 무한 루프를 도는 application을 번역하기가 힘드네요;;
2. 만약 1의 대답이 yes라면, application을 lazy하게 계산하나 eager하게 계산하나 언제가 두 결과가 같은가요? |
|
위로 |
|
|
허기홍
가입: 2007년 9월 27일 올린 글: 231
|
올려짐: 2009년11월3일 10:22 주제: |
|
|
1. - 아래 답으로 대치 -
2. 1번 대답과 상관없이, 수업시간에 배우셨겠지만 항상 두 결과가 같지는 않습니다.
2번 질문의 의미를 잘 모르겠네요. 구체적으로 말씀해주시면 다시 답해드리겠습니다.
허기홍 가 2009년11월3일 12:28에 수정함, 총 1 번 수정됨 |
|
위로 |
|
|
김성준
가입: 2009년 9월 10일 올린 글: 30
|
올려짐: 2009년11월3일 11:23 주제: |
|
|
함수가 무한 루프를 도는 경우는 잘 번역이 됩니다.
ex) (rec rec_fun b => rec_run 0) 0 => 번역하여 실행시 끝나지 않음
M0는 적극적인 프로그래밍 언어이므로
(fn a => 3)( (rec rec_fun b => rec_run 0) 0)
가 무한 루프를 돌아야합니다. 이렇게 동작하는 M0의 application을 어떻게 normal-order reduction을 따르는 람다 텀으로 번역해야할지 몰라서 질문을 올렸습니다. 강의 노트와 인터넷을 검색했지만 이에대한 힌트를 얻지 못 하겠네요.
mexp의 app를 lexp의 app으로 번역하면 위의 프로그램이 정상적으로 종료되거든요. |
|
위로 |
|
|
허기홍
가입: 2007년 9월 27일 올린 글: 231
|
올려짐: 2009년11월3일 12:27 주제: |
|
|
숙제 문서를 다시 읽어보니 김성준씨 말처럼
자연수를 "최종적으로 계산하는" 프로그램으로 제한한다.
에 근거하여...
-끝나고
-자연수를 게산하는 프로그램만 검사하겠습니다. |
|
위로 |
|
|
|