이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
심민섭
가입: 2013년 9월 14일 올린 글: 30
|
올려짐: 2013년9월14일 11:07 주제: 숙제 5번 관련! |
|
|
다름 아니라 몇가지 test case를 올려 주셨는데
test case에는
let t2 = insert (1, insert (10, insert(30,EMPTY))) in
let t3 = insert (25, insert (34, insert(9, insert (11,EMPTY)))) in
let t5 = merge (t2,t3) in
와 같이 종결시 in 붙습니다
하지만 저의 경우에는
ocaml -init exercise5.ml을 한 후에
let t2 = insert (1, insert (10, insert(30,EMPTY))) ;;
let t3 = insert (25, insert (34, insert(9, insert (11,EMPTY)))) ;;
let t5 = merge (t2,t3) ;;
in 없이 위에같이만 입력하면 실행이 잘 되는데
in을 붙인 인풋이 들어온다고 생각하나요>? 아니면 지금 저와같이 없어도 실행이 되기만 하면 되는 것인가요?
문제 스펙에는 전혀 표시가 안되서... |
|
위로 |
|
 |
최준원
가입: 2007년 3월 30일 올린 글: 149
|
올려짐: 2013년9월14일 11:42 주제: |
|
|
먼저 강동옥 조교가 올린 테스트 케이스를 다시 한 번 확인해 주시기 바랍니다.
"let x = ... in ..." 의 문법을 따라야 하기 때문에 가장 마지막 줄에는 아래와 같이 in 으로 끝나지 않습니다.
코드: |
let t2 = insert (1, insert (10, insert(30,EMPTY))) in
let t3 = insert (25, insert (34, insert(9, insert (11,EMPTY)))) in
let t5 = merge (t2,t3) in
(findMin t5,findMin (deleteMin t5)) (* 1,9 *)
|
위 코드를 그대로 붙여서 다시 확인해 주시면 될 것 같습니다.
채점시에는 위와 같이 ;; 을 붙이지 않은 형태를 테스트 케이스로 활용할 수 있습니다. |
|
위로 |
|
 |
심민섭
가입: 2013년 9월 14일 올린 글: 30
|
올려짐: 2013년9월14일 15:27 주제: 오히려! |
|
|
오히려 실행기에서 해당 테스트 케이스 그대로 긁어 와서 가장 끝에 ;; 를 붙이니 실행이 잘 되네요!
저게 한줄에 쓰고 종결 어미가 하나만 필요한 것인지 몰랐어요
근데 질문이
기존의 .ml 파일 안에 해당 테스트 케이스를 복사해서 넣으면 자꾸 에러가 나는데 그건 왜그러죠???
물론 .ml 파일안에 테스트 케이스를 넣을 때는 ;;는 안붙였고요!
다른 과제들도 실행기로 돌릴때는 문제가 전혀 없는데 (컴파일 잘되고요!)
같은 .ml파일안에 테스트 케이스 넣으면 다 에러 나던데...
그래서 제 생각에는 이게 실행기 입장에서는
.ml 파일을 일종의 라이브러리 처럼 사용하는 거 같은데
과제를 제출할 때 같은 .ml 파일 내에 테스트 케이스를 넣어서 돌아가는 것도 고려 해야 하나요??
쉽게 말해 1번 과제가 시작이
let rec sigma = ... 한데 (이거만 있고 하면 컴파일 잘 되고 실행기에서도 sigma 함수 호출이 매우 잘 됩니다!)
그 밑에 sigma ... 하면 컴파일이 안되고 에러가 떠요... |
|
위로 |
|
 |
최준원
가입: 2007년 3월 30일 올린 글: 149
|
올려짐: 2013년9월14일 15:44 주제: |
|
|
인용: | 기존의 .ml 파일 안에 해당 테스트 케이스를 복사해서 넣으면 자꾸 에러가 나는데 그건 왜그러죠??? |
아마 syntax error가 나셨을 것 같은데요,
.ml 파일에서 let-clause 를 사용할 때 가장 상위 레벨의 let에는 in을 붙이지 않습니다.
강동옥 조교가 올린 "OCaml 궁금한점 질문 받습니다" 게시글을 참고하시기 바랍니다.
인용: | 과제를 제출할 때 같은 .ml 파일 내에 테스트 케이스를 넣어서 돌아가는 것도 고려 해야 하나요?? |
.ml 파일 내에 테스트 케이스를 넣어서 확인하실 필요는 없습니다.
위의 문제를 해결하셨다면 글에서 언급하셨듯이 "ocaml -init [filename]"을 통해 실행하시고 테스트 케이스를 실행기에 입력하여 정상적으로 동작함을 확인하면 됩니다. |
|
위로 |
|
 |
심민섭
가입: 2013년 9월 14일 올린 글: 30
|
올려짐: 2013년9월14일 15:47 주제: |
|
|
그렇다면 .ml 파일안에서 아까와 같은 테스트 케이스를 검토하신다면
조교님들이 자체적으로 가장 위의 let 문의 in을 안붙여주시는 건가요? |
|
위로 |
|
 |
최준원
가입: 2007년 3월 30일 올린 글: 149
|
올려짐: 2013년9월14일 15:51 주제: |
|
|
인용: | 조교님들이 자체적으로 가장 위의 let 문의 in을 안붙여주시는 건가요? |
수강생 혹은 조교팀에서 in을 붙일 필요 없이 채점은 "어떠한 다른 방법"으로 자동으로 이루어집니다.
이전 댓글에 작은 수정을 해서 혼란이 있으셨을 수 있는데, 다시 한 번 말씀드리면
.ml 파일에 직접 테스트 케이스를 넣어 확인하지 않으셔도 되며, ocaml -init 을 통해 확인하시면 됩니다. |
|
위로 |
|
 |
심민섭
가입: 2013년 9월 14일 올린 글: 30
|
올려짐: 2013년9월14일 15:56 주제: |
|
|
감사합니다! |
|
위로 |
|
 |
|