게시판 인덱스

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

1-5 모빌에서 사용가능한 프로시져...

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Spring 2007)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
김재왕



가입: 2007년 3월 31일
올린 글: 10

올리기올려짐: 2007년4월2일 0:11    주제: 1-5 모빌에서 사용가능한 프로시져... 인용과 함께 답변

(list x) (car x) (cdr x) (cons x y) 등등도 사용하면 안되는건가요?
아무리 생각해도 재귀구현이라도 인자값을 변경해서 재귀호출시에
+ - 등은 쓸테니... 이런건 오퍼레이터인가요?
아직 프로시져랑 함수가 어떻게 다른건지 모르겠습니다 T^T;
leaf는 하나의 값만을 받아서 하나의 잎새나무만을 만들고
노드는 리스트를 받아서 나무를 만드는데
cons가 없다면 가지 안에 길이와 모빌을 같이 저장할 방법이;;
그리고 모빌안에 두개의 가지를 넣을 방법도;
think very hard라면;
leaf와 node만 가지고도 해결할 방법이 생길까요..?
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
공순호



가입: 2005년 9월 29일
올린 글: 363
위치: 302동 312-2호

올리기올려짐: 2007년4월2일 0:24    주제: 인용과 함께 답변

1.

4번 문제를 구현하실 때에는

말씀하신 list, cons, car, cdr,... 모두 이용하셔도 무방합니다.

하지만, 5번 문제를 풀이하실 때에는, 안됩니다.


5번 문제에서 이용하실 수 있는 것은

4번 문제에서 정의하신 함수들과

'+' 함수 입니다. (<- 이부분은 숙제 스펙에서 예외가 되겠군요.)


2.
인용:
leaf와 node만 가지고도 해결할 방법이 생길까요..?


그렇습니다.

더 말씀을 드리자면, 4번에서 정의한 다른 함수들(ex: nth-child, ..)도 이용하셔야 할 겁니다. (아, 5번문제 전체를 해결하기 위해서 말입니다.)


3.

다시 말씀드리지만

자유롭게 구현하세요.

꼭 이렇게 '구현' 되어야 한다는 것은 없습니다.
_________________
- soon@ropas
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
김재왕



가입: 2007년 3월 31일
올린 글: 10

올리기올려짐: 2007년4월2일 7:06    주제: 인용과 함께 답변

그렇다면 +는 함수였던거군요...
if는 스페셜폼인가요?
= * -의 경우는?
if와 =혹은 equal?등이 사용 가능하긴 한거죠..?
다른건 몰라도 if만은 꼭 사용가능해야 할것 같은데;

음... 제가 왜 cons나 list를 사용할수 없냐고 물어봤냐면
leaf와 node가 모두 인자를 하나만 취하기 때문인데요,
5번문제의 함수중에 make-branch와 make-mobile은
인자를 두개 받더라구요.
특히 make-mobile같은 경우는...
node를 사용하기 위해서는 인자로 리스트를 넘겨줘야 하는데
cons나 list를 안쓰고 리스트를 만들 방법이;
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
공순호



가입: 2005년 9월 29일
올린 글: 363
위치: 302동 312-2호

올리기올려짐: 2007년4월2일 10:13    주제: 인용과 함께 답변

1.

인용:
그렇다면 +는 함수였던거군요...


예, 그렇습니다.

> +
#<primitive:+>


2.

인용:
if는 스페셜폼인가요?


예, 그렇습니다.

> if
if: bad syntax in: if


3.

인용:
= * -의 경우는?


함수라고 보시면 되겠네요.

> =
#<primitive:=>
> *
#<primitive:*>
> -
#<primitive:->
>

4.

인용:
if와 =혹은 equal?등이 사용 가능하긴 한거죠..?
다른건 몰라도 if만은 꼭 사용가능해야 할것 같은데;


말씀하신 것들은 이용가능합니다.


5.

5번 문제에서 4번 문제에서 정의한 함수만을 이용하라는 것의 의미는

4번에서 디자인한 data를 생성하거나 접근할 때에 4번에서 만든 함수만을 이용해서 수행하라는 뜻입니다.

교과서 88 page에 보면 Figure 2.1 Data-abstraction barriers in the rational number package. 라는 그림이 있습니다.

이 그림과 관련 내용을 읽어보시면 5번 문제에서의 제약 사항이 어떠한 의미를 가지는지에 대해서

보다 분명하게 이해하실 수 있으리라 생각됩니다.


예를 들어서

weight함수를 제작하시다보면 mobile에 들어있는 무게를 접근하실 필요가 있습니다.

mobile 자체는 4번에서 정의한 함수로 구현되어 있겠지요.

mobile의 무게를 접근할 때에 4번에서 정의한 함수를 이용해서 접근해야지

이러한 것을 무시하고 직접 내부 구조를 파고 들어가서(list의 경우라면 car/cdr...)

그 값을 읽어내고, 이용하게 되면 Data-abstraction barrier를 넘어서게 되는 것이고

이러한 것을 하지 말라는 것이 5번의 의미입니다.


즉, 막무가내로 "이 함수는 이용하면 옳지 않다." 라는 것이 아닙니다. 이 Data-abstraction barrier을 넘어서는 일을 하면 안되는 것입니다.


6. 이 주제의 첫번째 답변에서 제가 실수를 했습니다.

인용:

노드는 리스트를 받아서 나무를 만드는데
cons가 없다면 가지 안에 길이와 모빌을 같이 저장할 방법이;;


김재왕님의 최초의 질문이 이것이었지요.

저는 node와 leaf만 가지고 된다고 했습니다만, 옳지 않은 답변입니다.

다시 답변드립니다.

node는 tree list를 받아서 tree를 만들어줍니다.

tree를 받아서 tree list를 만드는 연산을 제공하는 함수는 4번에 정의되어 있지 않습니다.

tree를 받아서 tree list를 만드는 행위가 Data-abstraction barrier을 깨뜨리는 것은 아니고요.

따라서 이 부분이 필요하신 것이라면 4번 문제 외부에서 제공되는 함수를 이용하셔도 좋습니다.

아마도 list가 이용되겠네요.

답답한 고통을 안겨드려서 죄송합니다.

앞으로는 심사숙고해서 답변드리도록 하겠습니다. 죄송합니다.
_________________
- soon@ropas
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
손님






올리기올려짐: 2007년4월2일 12:21    주제: 인용과 함께 답변

제가 질문에 서툴러서;
여러가지 질문을 한행으로 만들어 올리고
구분되야 하는 내용들을 문단으로 나누지 않고 순서도 뒤죽박죽으로
한 문단안에 다 기술해버려서 질문과 그 질문에서 묻고자 하는 예시와
또 다른 질문들이 행간에 묻히니까 그렇게 된 것 같습니다;
원인을 따지자면 잘못.. 이라고 하기는 그렇고 실수는 제 쪽에서
먼저 한게 아닌가 생각됩니다 ^^
위로
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Spring 2007) 시간대: GMT + 9 시간(한국)
페이지 11

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


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