게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

HW3의 LETF 구현 관련 질문입니다.

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2006)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
이준희



가입: 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

올리기올려짐: 2006년10월13일 18:29    주제: 인용과 함께 답변

장민석 씀:
그런데 자세히 보면 사실 equal(r1, r2) 정의가 조금 어색합니다. r1과 r2의 도메인이 같다는 말은 필드 id들이 서로 하나씩 동일하다는 얘기죠. 그리고 정의에 따르면 각각의 필드에 대한 Loc.t도 서로 같아야 하기 때문에, 단순히 레코드 r1의 필드들의 값을 각각 복사하여 새로운 레코드 r2를 만든 경우에는 r1과 r2는 같은 레코드가 아닌 게 되죠.

잘 이해하셨습니다. 그런 의도로 정의한 것입니다.
단순히 생긴 모양이 같다고 해서, 두 물건을 같은 것으로 보는 것이 절대적인 것은 아닙니다.
scheme의 eq? 와 eqv?, equal? 의 차이를 한번 읽어보시는 것도 좋을 듯 합니다.
http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Equivalence-Predicates.html#Equivalence-Predicates
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2006) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay