 |
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
이준희
가입: 2006년 9월 18일 올린 글: 43
|
올려짐: 2006년10월11일 14:32 주제: HW3의 LETF 구현 관련 질문입니다. |
|
|
시작부터 막혀서 삽질중입니다. OTL
K-의 LETF 정의를 보면, 가정이
env[<x, E1, env>/f], M ㅏ E2 ↓ v1, M'
으로 되어 있는데요, 여기서 procedure 이름인 f와 <x, E1, env>(즉, procedure)를 어떻게 바인딩할수 있는지 모르겠습니다.
Mem에서 allocate하는 것은 int만 가능하므로 튜플을 메모리에 넣은 후 이를 바인딩할 수도 없고(이 경우는 정의에서도 벗어나게 되구요), Env.bind는 로케이션의 주소를 필요로 하는데 저 튜플의 로케이션을 어떤 식으로 잡아야 할지 도통 감을 잡을 수 없네요.
LETF, CALLR, CALLV에서만 사용하는 별도의 메모리(튜플을 저장할 수 있는)를 정의하고, 이를 사용하는 함수를 따로 정의해 불러내는 식으로 구현해야 할까요?(근데 signature를 바꾸지 않고는 이렇게 만들수도 없을 것 같은...) 기존 Env에 정의된 함수만으로 구현할 수 있는 방법이 있는지 궁금합니다. |
|
| 위로 |
|
 |
이준희
가입: 2006년 9월 18일 올린 글: 43
|
올려짐: 2006년10월11일 15:39 주제: |
|
|
강의노트를 보면서 잘 생각해보니, Env의 정의가 Id->Addr + Procedure로 바뀌었으니 env_entry에 procedure를 추가하면 될 것 같군요.^_^
value에도 Record를 추가해야겠죠? 이때, 레코드끼리의 연산(add, sub...)은 어떻게 정의해야 하나요? 같은 field명이 정의되어 있을 때에 한해서 각 field에 해당하는 값끼리 계산하는 식으로 구현해야 할까요? _________________ ... |
|
| 위로 |
|
 |
장민석
가입: 2006년 9월 5일 올린 글: 165
|
올려짐: 2006년10월11일 21:04 주제: |
|
|
K언어 스펙 5번째 페이지를 보면, record 끼리 정의된 연산은 equal 밖에 없습니다. sub나 add등을 두 개의 레코드에 대해 실행하면 에러가 나야겠지요.
그런데 자세히 보면 사실 equal(r1, r2) 정의가 조금 어색합니다. r1과 r2의 도메인이 같다는 말은 필드 id들이 서로 하나씩 동일하다는 얘기죠. 그리고 정의에 따르면 각각의 필드에 대한 Loc.t도 서로 같아야 하기 때문에, 단순히 레코드 r1의 필드들의 값을 각각 복사하여 새로운 레코드 r2를 만든 경우에는 r1과 r2는 같은 레코드가 아닌 게 되죠. |
|
| 위로 |
|
 |
박대준
가입: 2005년 10월 7일 올린 글: 245
|
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|