이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
정민종
가입: 2010년 9월 20일 올린 글: 8
|
올려짐: 2015년12월2일 15:49 주제: 적극적인 계산법에 따른 결과에 대한 질문 |
|
|
안녕하세요.
제가 적극적인 계산법을 제대로 이해하고 있는지가 궁금하여 질문글을 올리게 되었습니다.
예를 들어 다음과 같은 식에서의 처리의 경우,
(if 8 = 9 then (raise 77) else 50) handle 70 200
제 생각에는 위 결과를 magic number 201512를 출력하는 것으로 되어야 할 것 같습니다. 그러나 실제로는 50을 출력하는 것이 옳은 결과로 나옵니다. 적극적인 계산은 이와 같은 if문에서는 적용되지 않는 것인지요?
*수정하였습니다
정민종 가 2015년12월3일 22:42에 수정함, 총 1 번 수정됨 |
|
위로 |
|
|
최재승
가입: 2012년 9월 10일 올린 글: 211
|
올려짐: 2015년12월2일 20:07 주제: |
|
|
안녕하세요,
적극적인 계산법은 함수를 적용(apply)할 때 인자를 계산(evaluate)해서 전달하는 것이며, 이것은 if 문의 실행 의미와는 전혀 별개의 문제입니다.
일반적으로 프로그래밍 언어에서 if 문의 실행 의미는, 조건이 true일 때는 true case만 계산하고, false일 때는 false case만 계산하는 것입니다.
xexp 언어도 그러한 실행 의미를 따르고 있으며, 뼈대코드의 xexp.ml 에서 언어의 실행 의미를 확인하실 수 있습니다.
따라서 예제로 든 식의 경우, false case만 계산하여 50으로 계산되는 것이 맞습니다. (적극적/소극적 계산과 관계없이 항상)
교재 (http://ropas.snu.ac.kr/~kwang/4190.310/11/pl-book-draft.pdf) 의 136-138쪽에 적극적 계산법과 소극적 계산법에 대한 내용이 있으므로 참고하시기 바랍니다.
조교 드림 |
|
위로 |
|
|
정민종
가입: 2010년 9월 20일 올린 글: 8
|
올려짐: 2015년12월3일 22:44 주제: |
|
|
답변 감사드립니다. 내용을 읽고 이해했습니다.
(글을 한 번 수정하였었는데, 다시 보니 오타가 있었네요. 논리에 맞게 재수정합니다.) |
|
위로 |
|
|
|