이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김현식
가입: 2017년 9월 5일 올린 글: 24
|
올려짐: 2017년11월22일 15:03 주제: 6-2 질문 |
|
|
cps 변환에서 전달하는 k는 함수로 이해하는게 맞나요?
즉, (cps' e) (fun x=> ~) 이런식으로 입력을 받는다는 의미인가요?
뼈대코드에서 조교님께서 미리 짜주신 Add부분에
App(Var k, Add (Var v1, Var v2)) 이렇게 되어 있는데
m0.ml에서 apply는 App(e1, e2)에서 e1은 함수만을 받는 것 같은데
Var k가 들어가도 되는건가요?
애초에 cps'함수 초반에 let k = new_name () in으로 string형태로
받는 것부터 잘 이해가 안됩니다 ㅜ
감사합니다^^ |
|
위로 |
|
|
김현식
가입: 2017년 9월 5일 올린 글: 24
|
올려짐: 2017년11월22일 15:16 주제: 추가 질문 |
|
|
그리고 교수님께서 수업시간에 앞으로 할일들을 실처럼 쭉 꿰서 전달하는 방식이라고 하셨는데, 앞으로 할일'들'은 cmd list같은 형태를 띄나요?
즉, 저희는 간단하게 cps'(Add(e1,e2)) 이런것만 다뤘지만 사실 그 오른쪽에 오는 해야할 일은 하나가 아니라 여러개일텐데 (((cps'(e) k1) k2) k3) ..의 형태인가요?
그리고
cps(e1 + e2) = \k. (cps e1) (\v1. (cps e2) (\v2. k (v1 + v2) ) )
에서 cps e1을 하면 \k. ... 형태로 쭉 다시 이어질텐데 일반적으로 e로 상수를 만나기 전까지 cps(e) = /k. /k. .../k.k (~) 이런 형태를 보일텐데 각 단계마다 k가 다르게 입력받는건가요? 위의 질문이랑 연계시키면 cps'(e) k1 k2 k3 .. 이런식으로 입력받아야 되는건가요?
답변 부탁드리겠습니다^^[/quote] |
|
위로 |
|
|
2016-19711
가입: 2017년 9월 12일 올린 글: 8
|
올려짐: 2017년11월24일 21:56 주제: 제가 이해하기로는.. |
|
|
제가 이해한 것을 맞는지는 모르지만 제가 이해한대로 간단히 설명을 드리자면..
k는 list가 아니라 함수이고
App의 첫번째 인자는 함수만을 받는게 아니라 mexp를 받아서 그 value가 함수가 아니면 TypeError를 띄우는 것 입니다
또한 각 단계마다 k가 달라야 하는 것이 맞기 떄문에 처음에 k = new_name ()으로 받는 것입니다 |
|
위로 |
|
|
김현식
가입: 2017년 9월 5일 올린 글: 24
|
올려짐: 2017년11월24일 22:13 주제: 답변 감사합니다 |
|
|
스스로 생각하다가 깨달았습니다^^
답변 감사합니다~ |
|
위로 |
|
|
|