이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
최성록 손님
|
올려짐: 2005년9월25일 21:22 주제: 숙제 3에서 merge가 밑에 정의된 경우인데, 'merge를 모릅니다'라는 에러 메세지가 발생합니다 |
|
|
merge가 ex3.n 이라는 파일의 하단에 있음에도 불구하고,
'merge를 모릅니다' 라는 에러 메세지가 발생합니다.
제가 merge를 엄밀하게 정의하지 못한 것일 까요??
아님 C 언어와 같이 deleteMin/ index 등 merge를 사용하는 함수들 앞에 merge를 '선언' 하여야 하나요?? |
|
위로 |
|
 |
김진현

가입: 2005년 9월 20일 올린 글: 91 위치: SNUCSE OPT. lab.
|
올려짐: 2005년9월25일 23:51 주제: 제 생각이지만 |
|
|
인터프리터가 소스를 읽습니다.
deleteMin/index 를 만납니다.
그 정의를 읽습니다.
그런데 정의 당시에는 merge 를 모릅니다.
아직 안 읽은 부분에 있으니까요.
그리고 deleteMin/index 를 돌립니다.
merge를 모릅니다. |
|
위로 |
|
 |
황태현 손님
|
올려짐: 2005년9월26일 2:06 주제: 한 가지 해결 방법. |
|
|
and 키워드를 이용하면 그 문제를 해결할 수 있습니다.
코드: |
type heap = EMPTY | NODE of rank * value * heap * heap
and rank = int
and value = int
|
에서 처럼
코드: |
fun rank EMPTY = 0
| rank NODE(r, _, _, _) = r
and insert(x, h) = ...
...
and merge(....) = ...
|
와 같이.
사실 위의 경우는 정의하는 순서를 바꾸면 해결될 수 있는 문제이지만
A가 정의되기 위해 B가 필요하고, 동시에 B가 있기 위해 A가 있어야 하는 때에는
누가 먼저랄 것 없이 공평하게 이름을 지어주는 "and"가 꼭 필요할 것이라고 생각합니다. :) |
|
위로 |
|
 |
김덕환
가입: 2005년 8월 29일 올린 글: 190
|
올려짐: 2005년9월26일 10:36 주제: Re: 숙제 3에서 merge가 밑에 정의된 경우인데, 'merge를 모릅니다'라는 에러 메세지가 발생합니다 |
|
|
진현 님과 태현 님께서 잘 설명해주셨습니다.
참고로, 진현 님의 설명을 수업 시간에 배운(혹은 배울) 정적 스코프(static scope)과 동적 스코프(dynamic scope)라는 용어와 연관해서 생각해보는 것도 좋을 듯합니다.
그리고, nML Primer의 "6.1 Use of and"에 and의 용법에 대한 태현 님의 설명보다 좀더 딱딱한(?) 설명이 있습니다. _________________ TheyAreAsSmartAsYouAre |
|
위로 |
|
 |
|