이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
박상일
가입: 2009년 9월 27일 올린 글: 13
|
올려짐: 2009년9월27일 21:02 주제: 숙제2에 대한 질문입니다. |
|
|
1. 문제에는 함수별로 argument들의 type이 명시되어 있습니다. 이것을 실제로 제한해야 하는 건가요? 아니면, 함수의 내부 구현이 제시된 스펙에 맞도록 완성하기만 하면 되는 건가요?
예를 들어 사용자가 실수로 잘못된 type의 argument를 넘겨 줄 때, 모든 가능한 오입력에 대해 에러 메시지를 출력해야 하나요? 만약 그렇다면, C의 typedef처럼 primitive들을 조합하여 만든 tuple (ex: nat X nat)이나 function (nat -> nat) 등에 임의의 type 이름을 부여할 수 있는 방법이 없을까요? 그런 게 가능하다면 에러 처리가 편리할 것 같아서요···.
2. 1번 문제의 nth-child나 3번 문제의 sub-circuit 등의 n은 0-based인가요, 1-based 인가요? 범위를 표기하기 위해 '자연수'와 'n>=0' 이라는 서로 모순되는 표현이 함께 쓰였는데 (자연수는 0을 포함하지 않으므로), 어느 쪽이 맞는 건지 알고 싶습니다. |
|
위로 |
|
|
윤용호
가입: 2008년 9월 23일 올린 글: 257
|
올려짐: 2009년9월28일 8:44 주제: re |
|
|
1. 지금까지 올라온 답변들을 보면 분위기상 '처리할 수 있는 에러는 모두 처리한다'가 좋은 방침일 것 같네요.
scheme이 '타입'이라는 개념을 run-time에만 적용시키기 때문에 우리가 타입에 대해 미리 빡빡한 처리를 해주기가 쉽지 않습니다. 예를 들어 int가 와야할 자리에 char가 오면.. 제가 아는 한은 미리 잡아낼 수가 없네요. (사실 '미리 잡아낸다'고 해도 결국 run-time에 잡는 거죠)
하지만 우리가 직접 구현하는 자료구조에서는, 예를 들어 leaf가 올자리에 node가 온다든지 mobile이 와야할 곳에 branch가 오는 정도는 미리 잡아낼 수 있을 것 같습니다. 그정도 처리는 해주는게 좋지 않을까요.
2. 0-based입니다.
교수님의 수업에서 '자연수'라는 표현에 '자연수면 1부터지 0이 왜 들어가' 라고 생각하면 머리가 복잡해지기 시작합니다. 보통은 범위로 '0이상'을 사용하시네요. 그러려니 하고 넘어가세요(..) 아마 강의자료에도 nat에 대해
nat = 0 | successor of n 이런 식의 표현이 있었던것 같고... |
|
위로 |
|
|
노건일
가입: 2009년 9월 26일 올린 글: 50
|
올려짐: 2009년9월28일 9:13 주제: |
|
|
그렇다면
nth-child 에서 0을 입력받는다면
자기자신을 내보내도록 하면 되나요?
아니면 0부터 세서 0 = 첫번째 자식, 1= 두번째 자식..
이런식으로 만들어야 하나요? |
|
위로 |
|
|
윤용호
가입: 2008년 9월 23일 올린 글: 257
|
올려짐: 2009년9월28일 11:56 주제: re2 |
|
|
자기 자신은 child가 아닙니다.
0-based라는건 말그대로 맨 처음 child가 0번째라는 뜻이죠. |
|
위로 |
|
|
장수원
가입: 2008년 9월 26일 올린 글: 167
|
올려짐: 2009년9월28일 12:03 주제: |
|
|
노건일 씀: | 그렇다면
nth-child 에서 0을 입력받는다면
자기자신을 내보내도록 하면 되나요?
아니면 0부터 세서 0 = 첫번째 자식, 1= 두번째 자식..
이런식으로 만들어야 하나요? |
첫번째 자식입니다. |
|
위로 |
|
|
장수원
가입: 2008년 9월 26일 올린 글: 167
|
올려짐: 2009년9월28일 13:38 주제: Re: re |
|
|
잘못된 부분이 있고 애매한 부분이 있어 수정했습니다 (09:28 1836)
---
항상 적극적으로 참여해 주셔서 감사합니다 다만 오해의 소지도 있는듯 해서 약간만
첨언하겠습니다.
윤용호 씀: | 1. 지금까지 올라온 답변들을 보면 분위기상 '처리할 수 있는 에러는 모두 처리한다'가 좋은 방침일 것 같네요.
하지만 우리가 직접 구현하는 자료구조에서는, 예를 들어 leaf가 올자리에 node가 온다든지 mobile이 와야할 곳에 branch가 오는 정도는 미리 잡아낼 수 있을 것 같습니다. 그정도 처리는 해주는게 좋지 않을까요.
|
저희 의도와 정확하게 일치하는 듯 합니다. 항상 사용자는 내부 자료구조에 대한 가정을 하지 않는다는 점을 명심해주세요 예컨데
코드: |
(is-leaf? (node '()))
|
(is-leaf? (node '())
는 false 이고, 명백히 에러를 발생시켜야 하지만,
코드: |
(leaf-val (node (list (leaf 3) (leaf 4))))
|
에러가 발생해야 하며,
는 에러인지 알 수 없습니다.
인용: |
scheme이 '타입'이라는 개념을 run-time에만 적용시키기 때문에 우리가 타입에 대해 미리 빡빡한 처리를 해주기가 쉽지 않습니다. 예를 들어 int가 와야할 자리에 char가 오면.. 제가 아는 한은 미리 잡아낼 수가 없네요. (사실 '미리 잡아낸다'고 해도 결국 run-time에 잡는 거죠)
|
이부분은 제가 의도를 알기 힘들어서 확실히 해야하는 부분만 말씀드릴께요. scheme에서 integer와 char는 run-time에는 구분가능합니다. 각각 로 하시면 됩니다.
윤용호 씀: |
2. 0-based입니다.
교수님의 수업에서 '자연수'라는 표현에 '자연수면 1부터지 0이 왜 들어가' 라고 생각하면 머리가 복잡해지기 시작합니다. 보통은 범위로 '0이상'을 사용하시네요. 그러려니 하고 넘어가세요(..) 아마 강의자료에도 nat에 대해
nat = 0 | successor of n 이런 식의 표현이 있었던것 같고... |
자연수는 "양의 정수" 혹은 "음이 아닌 정수"를 의미합니다. 다음을 참고해주세요.
|
|
위로 |
|
|
|