이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
crash27
가입: 2009년 3월 14일 올린 글: 19
|
올려짐: 2009년3월17일 14:20 주제: HW1, ex 8질문있어용! |
|
|
다른건 잘 해결하고 있는데 8번이 유독 어렵네요 ㅠㅠ
tree를 정의할때 LEAF of item으로 정의를 했는데..
예제에서는 NODE[NODE[LEAF a, LEAF *, LEAF b]... 등의 예가 문제에 있습니다.
그런데 item에 대한 정의도 없어서. LEAF a라고 하면 오류가 발생하고..
type item;; 이런식으로 정의를 해놓으면 그래도 또 오류가 발생하고..
LEAF of string이나 int같은걸로 바꿔서 문제를 풀어도 될까요?;;
그리고 goleft의 raise를 failwith로 바꿔야할 것 같아요!
결정적으로 zipper의 의미를 잘 모르겠네용;; ㅠ_ㅠ
어떤 지퍼가 존재하는데, 이 지퍼는 TOP이나 손(HAND)로 정의 되고 있습니다.
손(HAND)는 그 지퍼에 의해 찢어진 왼쪽 list와 [b]또다른 지퍼[/b]와 오른쪽 list로 표시가 되는데..
지퍼안에서 정의 되는 지퍼의 의미를 모르겠네요;;
(HAND l,z,r)에서 z의 의미를 설명해주세용!! |
|
위로 |
|
 |
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년3월17일 17:39 주제: |
|
|
1.
인용: | tree를 정의할때 LEAF of item으로 정의를 했는데..
예제에서는 NODE[NODE[LEAF a, LEAF *, LEAF b]... 등의 예가 문제에 있습니다.
그런데 item에 대한 정의도 없어서. LEAF a라고 하면 오류가 발생하고..
type item;; 이런식으로 정의를 해놓으면 그래도 또 오류가 발생하고..
LEAF of string이나 int같은걸로 바꿔서 문제를 풀어도 될까요?;; |
item의 type에 관해서는 위의 끈적이를 참조하시기 바랍니다.
2.
인용: |
그리고 goleft의 raise를 failwith로 바꿔야할 것 같아요!
|
faliwith가 어떤 의미인지 모르겠네요. 더 질문 주시면 답해드리겠습니다.
3.
인용: |
결정적으로 zipper의 의미를 잘 모르겠네용;; ㅠ_ㅠ
어떤 지퍼가 존재하는데, 이 지퍼는 TOP이나 손(HAND)로 정의 되고 있습니다.
손(HAND)는 그 지퍼에 의해 찢어진 왼쪽 list와 또다른 지퍼와 오른쪽 list로 표시가 되는데..
지퍼안에서 정의 되는 지퍼의 의미를 모르겠네요;;
(HAND l,z,r)에서 z의 의미를 설명해주세용!!
|
Page 4 와 5에 있는 예제를 잘 읽어보시기 바랍니다.
a x b + c + d에서 두번째 곱셈표의 '위치'에서 말씀하신 zipper 부분만 빼내보면
코드: |
HAND([LEAF +, NODE[LEAF a, LEAF *, LEAF b]],
TOP,
[])
|
이 되겠네요.
현재 지퍼의 위치보다 위쪽 부분의 나무들을 다시 zipper의 형태로 표현한 것이라고 생각하시면 되겠습니다. _________________ - soon@ropas |
|
위로 |
|
 |
crash27
가입: 2009년 3월 14일 올린 글: 19
|
올려짐: 2009년3월17일 19:23 주제: raise NOMOVE ''left of top'' 부분 에러 |
|
|
인용: |
faliwith가 어떤 의미인지 모르겠네요. 더 질문 주시면 답해드리겠습니다 |
raise NOMOVE ''left of top'' 과 같은 예제 코드가 있는데,
실제 수행해보면 에러가 발생합니다..
raise 말고 failwith라는 함수가 스트링을 받아서 출력해주면서 exception을 만들어주는 것으로 알고 있어서 이렇게 변경하는게 좋을지..
raise만 하는 것이 맞는지 궁금하네요 ^^;;
raise NOMOVE "left of top" -> 에러발생
raise NOMOVE
or
failwith "left of top"
은 작동함..
그리고 두번째 곱셉의 위치도 이렇게 정의되야 맞는거 같네용;; (문제의 예에서 list구분을 ;으로 바꾼거..)
LOC(LEAF "*",
HAND([LEAF "c"],
HAND([LEAF "+"; NODE[LEAF "a";LEAF "*";LEAF "b"]],
TOP,
[]),
[LEAF "d"])) |
|
위로 |
|
 |
고윤석
가입: 2008년 9월 26일 올린 글: 11
|
올려짐: 2009년3월17일 19:41 주제: 참고로... |
|
|
raise (NOMOVE "left of top") 하시면 에러는 발생하지 않습니다.  |
|
위로 |
|
 |
crash27
가입: 2009년 3월 14일 올린 글: 19
|
올려짐: 2009년3월17일 19:50 주제: |
|
|
인용: | raise (NOMOVE "left of top") 하시면 에러는 발생하지 않습니다. |
아흑.. 저는 왜 에러가 나올까용;; ㅠㅠ
# raise (NOMOVE "left of first");;
Characters 6-30:
raise (NOMOVE "left of first");;
^^^^^^^^^^^^^^^^^^^^^^^^
Error: The constructor NOMOVE expects 0 argument(s),
but is here applied to 1 argument(s)
# raise NOMOVE "left of first";;
Characters 13-28:
raise NOMOVE "left of first";;
^^^^^^^^^^^^^^^
Warning X: this argument will not be used by the function.
Exception: NOMOVE. |
|
위로 |
|
 |
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년3월17일 20:38 주제: |
|
|
exception NOMOVE가 다음과 같이 정의되어 있으신가요?
코드: |
exception NOMOVE of string
|
그렇다면 다음 코드가 문제 없이 exception을 발생시키게 됩니다.
코드: |
raise (NOMOVE "left of first");;
|
_________________ - soon@ropas |
|
위로 |
|
 |
crash27
가입: 2009년 3월 14일 올린 글: 19
|
올려짐: 2009년3월17일 21:16 주제: 해결했습니다 |
|
|
선언부에서 string을 넣어서 선언할수 있었군요!!
해결되었습니다 감사합니다~ ^^ |
|
위로 |
|
 |
|