|
|
이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
권현우
가입: 2018년 9월 11일 올린 글: 2
|
올려짐: 2018년11월28일 0:32 주제: 6-2 CPS 형태 스펙 질문 |
|
|
안녕하세요
6-2 CPS 변환 스펙에 질문이 있어 글을 올립니다.
보충 스펙에서 다음과 같이 규칙이 제시 되어있습니다.
인용: | 1. 어떤 mexp에 나타난 부분식(sub-expression)들은 모두 cps 변환되어야 합니다. 예를 들어 cps(e1+e2)의 경우, e1, e2는 각각 cps로 변환된 (cps e1), (cps e2) 형태로 나타나야 합니다.
2. e가 상수(Num, Var, Fn, Rec) 일때만 cps(e) = \k.k(...) 형태를 허용합니다. 상수의 경우 e자체가 이미 계산된 결과이므로 바로 k에 전달하는 것입니다.
|
1번에 의하면 Fn(x,e)의 경우 e를 부분식으로 볼 수 있으니 cps 변환하는게 맞다고 생각되는데
2번에 의하면 Fn(x,e) 자체를 이미 계산된 결과로 보고 e를 cps 변환하지 않는게 맞다고 생각됩니다.
Fn(x,e)의 e를 cps 변환시켜야 하는지 아닌지 잘 판단이 서질 않습니다.
이 부분을 명확히 알려주셨으면 좋겠습니다.
감사합니다. |
|
위로 |
|
|
로파스 Site Admin
가입: 2012년 9월 9일 올린 글: 280
|
올려짐: 2018년11월28일 18:59 주제: |
|
|
Fn(x, e)에서 e 역시 sub-expression이므로 물론 알맞은 방법으로 cps변환되어야 제대로 실행됩니다. 구현을 완성하신 뒤 (fn x => x+1) 1 과 같은 간단한 프로그램을 변환시켜 보시면 직접 확인해보실 수 있습니다.
스펙의 2번 사항에서 e를 바로 k에 전달한다는 것은 복합식의 경우와는 다르게 계산된 결과값을 따로 받는 부분(\v....) 이 필요하지 않기에, \k.k(...)형태로 쓸 수 있다는 뜻입니다. e를 '바로' 전달한다는 것이 다소 애매모호하게 표현되어있던 것 같은데, e를 그대로 넣어야 한다는 것은 아니고 cps변환시에 잘 작동할 수 있도록 알맞게 변환해주시면 되겠습니다.
-조교 드림. |
|
위로 |
|
|
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|