| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
송수현
가입: 2006년 9월 4일 올린 글: 25
|
올려짐: 2006년10월24일 16:49 주제: 문제가 잘 이해되지 않습니다. |
|
|
설탕을 녹인다는게 잘 이해되지 않습니다.
call f<x> 를 call f'(&x)로 녹이고, f의 인자이름 쓰이는 곳을 적절히 바꾼 것이 f'이다
를 곰곰히 생각해 봤는데
이런 K- 프로그램이 있다고 한다면
| 코드: | let Procedure add(x) = x := x + 1; x-1
in
let a := 0
in write (call add<a>);
write a
end
end
|
결과는
0
1
이겠지요.
이것을 녹인다고 하면 외부적으로 Procedure를 바꾸고(인자이름 쓰이는 곳을 적절히 바꿔서)
let Procedure add(x) = (*x) := (*x) + 1; (*x)-1
내부적으로 dissolveCbr 이 CALLR(a) 를 CALLV(AMPER(a)) 로 바꿔준다
라고밖에 생각되지 않습니다.
그렇다면 이것은 원래의 K- 프로그램에서 call add<a>이 call add(&a) 로 바뀐 것 뿐으로, 이러한 일을 하는 dissolverCbr은 단순히 저렇게 바꿔주는 일 외에는 의미있는 일을 하지 않는 것으로 생각됩니다.
그리하여 잘못 생각했다고 판단했습니다만.. 문제를 해석(!) 해 주실 분 안계시나요..
그리고 2번 문제입니다만, recursive를 아무리 생각해봐도 구현할 수가 없습니다.. call이나 push(x, C')나 둘 다 빈틈이 없더군요; sm5를 직접 수정하면 안될테고.. 물론 저의 짧은 생각입니다만, 다른 분들은 가능하시던가요?
PS) 수요일에 사정상 수업을 불참한다는 메일을 교수님 메일주소로 드렸는데 아직 읽지 않으셔서.. 혹시나 이 글을 보신다면 메일 확인해주시기 바랍니다~ |
|
| 위로 |
|
 |
이준희
가입: 2006년 9월 18일 올린 글: 43
|
올려짐: 2006년10월25일 13:15 주제: |
|
|
저도 그냥 그런 식으로 이해하고 있습니다. 함수를 한번 더 거쳐야 하니 비효율적이지만, 그냥 녹이는 과정을 한번 생각해보라는 문제가 아닐까요?^^ _________________ ... |
|
| 위로 |
|
 |
박대준
가입: 2005년 10월 7일 올린 글: 245
|
|
| 위로 |
|
 |
|