이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김남현
가입: 2012년 9월 14일 올린 글: 19
|
올려짐: 2013년9월22일 17:25 주제: 2-4 envrionment 질문입니다. |
|
|
현재 주어진 스펙으로는 environment 타입의 변수는 오로지 emptyEnv 밖에 만들 수 없는 것 같습니다.
따라서 환경을 정의한 후 expr을 eval하는 것은 불가능할 것 같습니다.
그렇다면 environment는 어떻게 사용되기에 구현해야하는 것인가요?
만약 다음의 expr을 실행하고 나면 environment가 "x=5"라는 식의 환경이 구성되어있어야 하는 것인가요?
코드: | LET("x", 1,
PLUS (LET("x", 2, PLUS(VAR "x", VAR "x")),
VAR "x")
) |
empty밖에 만들 수 없는 environment가 본 숙제에서 왜 필요한 것인지 잘 모르겠습니다. |
|
위로 |
|
 |
최준원
가입: 2007년 3월 30일 올린 글: 149
|
올려짐: 2013년9월22일 20:16 주제: |
|
|
인용: | 그렇다면 environment는 어떻게 사용되기에 구현해야하는 것인가요? |
사실 environment가 어떻게 사용되는지 사용자는 알 수 없습니다.
시그니처로 추상화된 모듈을 사용하는 입장에서 알 수 있는 것은,
1) emptyEnv 값이 존재한다.
2) eval 함수를 실행시키기 위해 environment type 의 값이 필요하다.
정도가 되겠죠.
인용: | 만약 다음의 expr을 실행하고 나면 environment가 "x=5"라는 식의 환경이 구성되어있어야 하는 것인가요? |
꼭 그렇지는 않습니다.
하지만 프로그래밍 언어 강의에서 배운 내용을 공부하는 입장에서 이번 숙제를 하고 계시다면
environment 타입의 어떤 값이 이름과 값에 해당하는 어떤 자료형을 가지고 있겠죠.
위에서 말씀드렸듯이 environment 타입의 값이 eval 할 때 어떻게 쓰이는지 사용자는 모릅니다.
참고로, 만들어주신 예제에서는 (환경의 의미에 맞게 구현되었다면) "x=5" 의 환경이 구성되지 않습니다.
다시 한 번 확인해 주시고요.
결론적으로, 채점시에는 eval 이 리턴하는 값이 올바른지만 확인합니다.
하지만 강의 내용을 배우고 익히는 입장이라면 environment의 의미를 올바르게 이해하시고 구현하시는 것이 좋습니다  |
|
위로 |
|
 |
유경인
가입: 2013년 9월 9일 올린 글: 29
|
올려짐: 2013년9월25일 23:56 주제: |
|
|
설명이 조금 헷갈려서 그러는데요
let 안에서 환경이 x=1 -> x=2 -> x=1이었다가
let 빠져나가면서 emptyEnv로 바뀌는거 맞나요? |
|
위로 |
|
 |
최준원
가입: 2007년 3월 30일 올린 글: 149
|
올려짐: 2013년9월26일 0:51 주제: |
|
|
인용: | let 안에서 환경이 x=1 -> x=2 -> x=1이었다가
let 빠져나가면서 emptyEnv로 바뀌는거 맞나요? |
환경이 말씀하신 순서로 바뀐다고 말할 수는 없고요,
가장 바깥 let clause 에 의해 x->1 로 묶이고,
PLUS 의 왼쪽 식에서는 다시 let clause 에 의해 x->2 로 묶입니다.
PLUS 의 오른쪽 식에서는 가장 바깥쪽 let 에 의해 묶인 x->1 을 환경에서 찾을 수 있어야겠죠  |
|
위로 |
|
 |
|