| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
송수현
가입: 2006년 9월 4일 올린 글: 25
|
올려짐: 2006년9월27일 23:29 주제: LET 에 관한 질문입니다. |
|
|
LET의 형식을 보면
입니다..
일종의 binding이라고 알고 있습니다. 즉
| 코드: | | let x = 4 in write x+3 |
이런식으로 쓰일 텐데요,
그렇다면 이것은
| 코드: | | SEQ(ASSIGN(id, exp), exp) |
와는 어떤 차이가 나는지요? |
|
| 위로 |
|
 |
송정효
가입: 2006년 9월 23일 올린 글: 5
|
올려짐: 2006년9월28일 0:45 주제: |
|
|
| 제 생각엔 Sequence로 된 후자의 경우는 미리 선언한 변수를 쓰는 것이라 메모리 할당이 일어나지는 않는 게 차이라고 봅니다. |
|
| 위로 |
|
 |
송수현
가입: 2006년 9월 4일 올린 글: 25
|
올려짐: 2006년9월28일 8:13 주제: |
|
|
| 헉.. 그렇다면 ASSIGN의 경우는 할당되었을 때 새로운 값 넣기와 새로 할당하며 값 넣기가 아닌, 새로운 값 넣기만 해당된다는 말씀인가요? |
|
| 위로 |
|
 |
송정효
가입: 2006년 9월 23일 올린 글: 5
|
올려짐: 2006년9월28일 12:05 주제: |
|
|
| 정의하기 나름인 것 같습니다. 그렇지만 선언자가 없이 assignment 오퍼레이터만 있는 경우 새로운 변수를 선언하는 의미는 빠진다고 보는게 낫다고 제 나름대로 판단했습니다. let ... in 이 K-에서 이 그 역할을 하는 것 같고요. |
|
| 위로 |
|
 |
박대준
가입: 2005년 10월 7일 올린 글: 245
|
올려짐: 2006년9월28일 13:51 주제: |
|
|
와
는 의미가 전혀 다른 프로그램입니다.
게다가 후자의 프로그램은 stand-alone프로그램으로써는 의미(semantics)가 없습니다.
강의시간에 정의한 의미구조에서는,(강의자료 3.ppt의 27번 슬라이드)
x라는 식의 값을, 환경에서 x에 바인딩된 주소에 해당하는 메모리 값으로 정의하고 있습니다.
그리고 어떤 변수를 환경에 바인딩시킬 수 있는 유일한 방법은 let-바인딩 입니다.
따라서 전자에서는 x라는 변수가 어떤 l이라는 주소에 바인딩되고, 메모리에서 l이 가리키는 곳에 4라는 값을 넣게됩니다.
하지만 후자에서는(만약 이 프로그램이 단독으로 존재할경우)
x에 4를 assign하기위해서 x가 바인딩된 주소를 가져와야 하는데,
현재 환경에서는 어떠한 변수도 바인딩이 되어 있지 않기때문에,
4라는 값을 넣을 수가 없습니다.
따라서 후자의 프로그램은 다음과 같은 let-바인딩 안에서 사용되지 않는 이상 의미가 없습니다.
| 코드: | let x=0 in
x=4;write x |
|
|
| 위로 |
|
 |
|