김기환
가입: 2026년 3월 5일 올린 글: 7
|
올려짐: 2026년6월17일 18:07 주제: [챌린지 3번] 적극적 계산법에 관한 궁금증 |
|
|
안녕하세요. 챌린지 3번을 풀다 궁금한 것이 생겨 질문 드립니다.
제공된 D언어에 대해 if0 e e e의 경우, 맨 처음 e에 따라 실행해야 하는 expression이 달라지게 됩니다. 교과서에서도 재귀구문과 if문에 관해서도 해당 내용이 언급되어 있던 것으로 기억합니다.
제가 이해한 call by value(적극적 계산)에서의 if 실행규칙은 아래와 같습니다.
1. 조건문을 평가(여기서는 첫번째 e 계산 결과 0이면)
2. 참이면 두번째 e를 실행
3. 거짓이면 세번째 e 실행
1) 해당 해석이 챌린지 3번에서 의도된 if구문의 실행 규칙이 맞을까요?
2) 만약 그렇지 않고, if문 또한 eager하게, 세개의 e 모두를 평가한 후 if문을 수행한다고 보아야 한다면, branch의 각 구문을 값(lambda 등)으로 감싸는 형태처럼 작성해도 되는지 궁금합니다.
3) 풀이 서술 시, 실제 프로그램 실행에 관한 내용 없이, 구성한 프로그램의 논리적 설명과 단순 타입 시스템 통과 내용만을 포함하여도 되는지 궁금합니다.
문제 풀이 전에, 언어의 실행규칙과 정의를 명확히 하고싶어 질문드립니다.
교수님과 조교님들 모두 한학기 수고 많으셨습니다.
덕분에 한학기 동만 많은 것을 배울 수 있었습니다.
좋은 하루 되십시오!
감사합니다. |
|