| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
김진산
가입: 2006년 9월 13일 올린 글: 45
|
올려짐: 2007년10월10일 16:24 주제: nested 된 같은 이름의 variable 처리. |
|
|
nested 된 같은 이름의 variable assign의 변수 유효 범위를
처리해 주어야 합니까?
----
주어진 test6.k- 를 아래와 같이 수정해 보았습니다.
| 코드: |
let x:=0;
proc inc(n) = x := x+n
in
write x;
(
let x:=1
in
(inc (1); write x)
);
write x
|
현재는 메모리 삭제 기능이 없고, 모든 메모리 변화가 accumulate 됩니다.
변수의 유효범위를 생각한다면
0
1
0
이 찍혀야 하지만, 현재는
0
1
1
이 찍힙니다.
0
1
0
이 찍히도록 수정해야 하는건지요? |
|
| 위로 |
|
 |
정영범
가입: 2005년 9월 5일 올린 글: 167
|
올려짐: 2007년10월10일 18:24 주제: |
|
|
0
1
1
이 찍히는 게 맞는 겁니다.
| 코드: |
let x:=1
in
(inc (1); write x)
);
|
inc(1) 함수 내에서 쓰는 환경은 proc inc(n)가 만들어 질때의 환경으로 지금 let x:=1 을 통해 만들어진 환경하고는 다릅니다.
따라서, 환경이 다르기 때문에 write x에서 출력될 x의 값을 함수 inc 내에서는 변경 시킬 방법이 없습니다. |
|
| 위로 |
|
 |
김진산
가입: 2006년 9월 13일 올린 글: 45
|
올려짐: 2007년10월12일 1:30 주제: |
|
|
아! 제가 잘 못 생각했습니다.
K-- 에는 end가 없어서
| 코드: |
let x :=1
in
let x:=2
in
...
end
write x
end
|
이런게 불가능하군요.
답글은 시간에 맞게 봤는데, 다른 과목 실험 때문에 정신이 없다가
이제야 답글 답니다.
답변해 주신 조교님 감사합니다. |
|
| 위로 |
|
 |
|