이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
백주현 손님
|
올려짐: 2005년10월5일 23:00 주제: ASSIGN을 구현(?)하는데... |
|
|
밑에서 김진현님이 말씀하신 것처럼
fun 돌렷2 : 메모리 * 환경 * 값 => 값 * 메모리
을 구현하고 있습니다.
근데 ASSIGN을 처리하는데 궁금한 것이 있어서 질문을 드립니다.
ASSIGN(id, exp)의 경우에 return되어야 하는 것이 uint * 메모리인데..
제 생각에는 id가 추가된 환경도 return되어야 하지 않을까라는 생각이 듭니다.
id가 추가된 환경을 return하지 않으면 한번 정한 값은 바꿀 수 없기 때문에[맞는 지 모르겠습니다만;] 새로운 환경으로 갱신되지 않을 것 같은데..
제가 잘못 알고 있는 걸까요? |
|
위로 |
|
|
김덕환
가입: 2005년 8월 29일 올린 글: 190
|
올려짐: 2005년10월5일 23:14 주제: Re: ASSIGN을 구현(?)하는데... |
|
|
백주현 씀: |
근데 ASSIGN을 처리하는데 궁금한 것이 있어서 질문을 드립니다.
ASSIGN(id, exp)의 경우에 return되어야 하는 것이 uint * 메모리인데..
제 생각에는 id가 추가된 환경도 return되어야 하지 않을까라는 생각이 듭니다.
|
ASSIGN에서는 변수가 환경에 추가되지 않습니다. K-에서 환경에 변수가 추가되는 경우는 LET 뿐입니다.
정의를 다시 한 번 살펴보시기 바랍니다. _________________ TheyAreAsSmartAsYouAre |
|
위로 |
|
|
황태현
가입: 2005년 9월 27일 올린 글: 10
|
올려짐: 2005년10월5일 23:19 주제: Re: ASSIGN을 구현(?)하는데... |
|
|
백주현 씀: |
ASSIGN(id, exp)의 경우에 return되어야 하는 것이 uint * 메모리인데..
제 생각에는 id가 추가된 환경도 return되어야 하지 않을까라는 생각이 듭니다.
id가 추가된 환경을 return하지 않으면 한번 정한 값은 바꿀 수 없기 때문에[맞는 지 모르겠습니다만;] 새로운 환경으로 갱신되지 않을 것 같은데..
|
ASSIGN은 환경에 id를 추가하는 것이 아니라고 해석하면 될 것 같아요.
즉, 환경에 id를 추가하는 기능을 가진 것은 LET뿐이고
ASSIGN은 이미 환경에 id가 있을 때, 그 주소를 얻어 해당 주소가 가리키는 메모리의 값만을 바꾸는 것으로.
코드: |
let
x := 10
in
((x := 20); x)
end
|
의 결과는 20이고,
의 결과는 x를 모릅니다.
가 되게 해석하면 될 것 같아요.
See:K- 의미 정의
_________________ 39701926☆ |
|
위로 |
|
|
|