게시판 인덱스

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

물건중심 프로그래밍 질문입니다

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2012)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
박준호



가입: 2012년 9월 15일
올린 글: 71

올리기올려짐: 2012년10월28일 17:35    주제: 물건중심 프로그래밍 질문입니다 인용과 함께 답변

물건중심 프로그램이라는게 function : input -> output 으로 항상 값을 리턴하는게 아니라, 물건의 상태를 바꾸는거라고 하셨잖아요,

가장 대표적으로는 array sorting 함수를 보면 보통
var sorted-array = sort(array) 처럼 sort함수의 출력결과가 array가 되는게 아니라

var array = initialize
sort(array);
array <- sorted!
처럼 함수를 실행하면 원래 있던,함수의 input으로 들어온 변수가 바뀌는걸텐데요

empty-circuit을 void function이 아닌 type자체로 정의하게 되면
add-gate-to-circuit을 물건 중심으로 구현할 경우 input으로 들어온 circuit을 바꾸게 되잖아요,
처음에 add 할때는 empty-circuit을 바꾸게 되어서 empty-circuit상수의 값도 바뀌어버리는 문제가 있는데요, type이 아닌 function으로 정의하면(void든 인자를 받든) 매번 초기화가 가능한데 타입으로 바로 지정할경우에는 위와같은 문제가 생겨요.
이렇게 되면 (set! empty-circuit %$^$) 하기 전까지는 초기화가 이루어지지 않아요.
그런데 위와같이 초기화해야 한다는건 empty-circuit이라는 타입의 내부구현을 아는 상태에서 해야하기 때문에 이렇게 되면 굳이 empty-circuit을 사용하는 의미자체가 없지 않을까요??? empty-circuit이라는건 말그대로 empty한 circuit을 새로 받아오는 (예컨데 circuit C1 = new circuit();같은 역할) 역할을 해야 하는데, add하는 함수를 물건 중심으로 짜면 empty-circuit이 같이 바뀌어서 다음에 empty-circuit을 의미있게 쓸수가 없어요.
값을 더미로 복사해서 원래값을 유지하고 더미를 바꾸면, 원래값은 그대로 고정되게 되지만, 더미값으로 계산을 하면 그 더미값을 리턴해야만 하고, 그렇게 되면 물건중심이 아니게 되어버리잖아요.

이번 실습에서는 타입보면 add-gate-to-circuit은 값중심으로 짜는것같고..
그럼 wire에 대해서만 물건중심으로 짜면 되는것인가요???

그리고 만약 empty-circuit을 위와같이 타입으로 정의하고
add-gate-to-circuit을 물건중심으로 (gate-name * gate * circuit -> void) 짤 수 있는방법이 있을까요? (empty-circuit 에 영향을 주지 않구요)
위로
사용자 정보 보기 비밀 메시지 보내기
최민아



가입: 2009년 9월 28일
올린 글: 236

올리기올려짐: 2012년10월29일 11:35    주제: 인용과 함께 답변

empty-circuit을 function으로 정의하고 싶으시면 그렇게 바꾸셔도 됩니다.

add-gate-to-circuit 역시 물건중심으로 (gate-name * gate * circuit -> void) 짜셔도 됩니다.

편하신 대로 구현해 주세요.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2012) 시간대: GMT + 9 시간(한국)
페이지 11

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


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