| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
이상아
가입: 2012년 9월 6일 올린 글: 10
|
올려짐: 2012년11월16일 2:06 주제: 타입에러 관련...................... |
|
|
재귀함수 구현할 때 base case와 다른 case의 타입이 달라서 계속 에러가 나는데요
다시 말하면 parenize 함수 내에서 다시 parenize를 호출할 때
호출한 게 LEAF이면 문제 없는데
NODE일 경우 기존에 의도한 LEAF의 타입이 아니라 'a 타입이라서 에러라고 뜹니다 ㅠ
예로 들어주신 NODE(NODE(LEAF Korea, LEAF Portugal), LEAF Brazil) 의 경우
첫 NODE의 두 element에 대해 각각 재귀적인 parenize를 호출했을 때
(NODE(LEAF Korea, LEAF Portugal), "Brazil") 이렇게 일단 묶고 나서 다시 NODE(LEAF Korea, LEAF Portugal)에 대해 parenize를 호출하는 게 불가능한가요?
그렇게 짜봤더니 계속 타입에러가 나서 혼란에 빠졌습니다............... |
|
| 위로 |
|
 |
최민아
가입: 2009년 9월 28일 올린 글: 236
|
올려짐: 2012년11월16일 10:43 주제: |
|
|
질문을 정확하게 이해하지 못하겠습니다.
parenize 함수는 항상 tourna 타입만을 받아야 합니다.
tourna 타입은 항상 NODE of tourna * tourna이거나 LEAF of team
이어야 합니다. |
|
| 위로 |
|
 |
조동철
가입: 2011년 9월 6일 올린 글: 35
|
올려짐: 2012년11월16일 21:42 주제: |
|
|
질문은 잘 모르겠지만,
ocaml로 타입 에러때문에 힘들 땐, 작성하는 함수마다 함수 타입을 지정해두고 하시면,
타입 에러 버그 잡기는 쉬워요.
예를 들어, parenize 함수 같은 경우엔, 문제에서 tourna -> string으로 타입을 지정해주잖아요. 이걸 그냥 코드에 써서,
| 코드: | let rec parenize : tourna -> string = fun t -> ....
|
이렇게 강제로 지정해주고 짜면, 타입 에러 문제 잡을 때, 꽤 편합니다. |
|
| 위로 |
|
 |
이상아
가입: 2012년 9월 6일 올린 글: 10
|
올려짐: 2012년11월17일 1:14 주제: |
|
|
| 우와 해결했어요!!! 감사합니다~~ |
|
| 위로 |
|
 |
|