이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김재왕
가입: 2007년 3월 31일 올린 글: 10
|
올려짐: 2007년4월1일 20:44 주제: 친절한 답변 감사드리면서 다음질문 -ㅅ-;; |
|
|
이제 조금 무슨 문제인지 감을 잡았다는..;
node와 leaf가 구분이 되야 하는 거라면
is-empty-tree? 에 leaf로 만들어진 tree가 들어가도 false가 되는거겠죠?
is-leaf? 에 node로 만들어진 tree가 들어갈때 false인 것 처럼?
예를 들자면 leaf 함수는 리스트를 값으로 가질 수도 있으니
빈리스트 역시 leaf함수의 인자가 될 수 있을테고
이렇게 만들어진 잎새나무는
node에 빈리스트를 넣어 만들어진 나무와는
구분이 되어야하는건가 하는 문제입니다;
그렇다면 잎새나무나 나무를 scheme에서 기본으로 주는
list나 pair와 같은 형식으로 만들어 버리면
위의 함수들에 leaf나 node로 만들어진 값이 아니라
list나 pair를 넣으면 true가 나올테니 이러한 형식을 그대로 가져다
쓰면 안되는거군요?
(너무 당연한 질문인가; 그래도 확실히 해두고 싶어서; )
다시 수정으로 질문하고자 했던 예를 추가합니다;
가령 (define (leaf x) (list x))
와 같이 정의하고
(define ex1 (leaf 'a))
(define ex2 (list 'a))
와 같이 정의한 후
(is-leaf? ex1)
(is-leaf? ex2)를 각각 호출하면
#t와 #f가 나와야 하는지를 묻고 싶었습니다;
물론 예를 든것처럼 하면 둘을 구분할 방법이 없으니 둘다 #t가 나오겠죠;
김재왕 가 2007년4월1일 20:57에 수정함, 총 2 번 수정됨 |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2007년4월1일 20:52 주제: |
|
|
1.
인용: | is-empty-tree? 에 leaf가 들어가도 false가 되는거겠죠? |
그렇습니다.
2.
인용: | is-leaf? 에 leaf가 들어갈때 false인 것 처럼? |
음? 오타인 것으로 생각하고 있겠습니다. => 수정하셨군요 ^^;; 실시간이다보니 sync가 안맞는 수가 생기는군요.
3.
인용: | 그렇다면 leaf나 false를 scheme에서 기본으로 주는
list나 pair와 같은 형식으로 만들어 버리면
위의 함수들에 leaf나 node로 만들어진 값이 아니라
list나 pair를 넣으면 true가 나올테니 이러한 형식을 그대로 가져다
쓰면 안되는거군요?
(너무 당연한 질문인가; 그래도 확실히 해두고 싶어서; ) |
첫번째 줄에 "leaf나 false를"에서의 false는 혹시 node의 오타인가요?
위의 함수들은 is-empty-tree? is-leaf? 를 말씀하시는 것일텐데
list나 pair를 넣으면 true가 나올지 false가 나올지는
leaf, node 함수와
is-empty-tree?, is-leaf? 함수를 어떻게 구현하셨는지에 따라서 달라질 수 있습니다.
제가 도와드릴 수 없을 것 같네요.
너무 당연한 질문은 아닌 것 같습니다. 제가 질문하신 것을 완전히 이해하지 못한 것 같아요. 괜찮으시다면 보다 자세히 질문해주시면 좋을 것 같네요. _________________ - soon@ropas |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2007년4월1일 21:03 주제: |
|
|
0.
추가적인 질문 사항에 대해서는 답글로 달아주시는 편이
제가 알아보기가 쉬운 것 같습니다.
1.
인용: | 가령 (define (leaf x) (list x))
와 같이 정의하고
(define ex1 (leaf 'a))
(define ex2 (list 'a))
와 같이 정의한 후
(is-leaf? ex1)
(is-leaf? ex2)를 각각 호출하면
#t와 #f가 나와야 하는지를 묻고 싶었습니다; |
문제의 정의에 의해서 (is-leaf ex1)은 #t를 만들어내야합니다.
이 경우에는 ex1 과 ex2가 동일하므로
(is-leaf ex2)의 경우에도 #t를 만들어내겠네요.
하지만, 이것은 올바른 동작은 아니겠지요.
결과적으로 (define (leaf x) (list x)) 와 같이 leaf를 정의하면 옳지 않다는 것에 도달할 수 있겠습니다.
자, 이제 곰곰히 생각해보실 시간인가요? _________________ - soon@ropas |
|
위로 |
|
|
|