공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년3월24일 11:10 주제: 숙제 1 채점중 발견된 여러분 코드의 컴파일 에러들입니다. |
|
|
프로그램 분석 숙제중, OCaml 로 구현하는 숙제는 자동 채점기를 이용하여 채점됩니다.
이번 숙제를 채점하면서 컴파일 되지 않아던 부분들을 공개합니다.
읽어보시면 앞으로 숙제 제출하실 때에 도움이 되실 것 입니다.
이하에서 나오는 세 자리 숫자 XXX는 수강생 학번의 마지막 세 자리를 의미합니다.
0. 숙제 제출 시스템을 이용하실 때에는 각각의 문제에 대한 소스를 올리셔야 합니다. 문제 1- 8을 압축해서 한번에 올리신 분이 있었습니다.
문제 1.
632,
iter 함수의 타입은 int * ('a -> 'a) -> 'a -> 'a 이지,
int -> ('a -> 'a) -> 'a -> 'a 가 아닙니다.
805,
제출한 iter의 타입이 int -> int -> int 입니다.
간단한 착오가 아닌 것으로 판단하여 수정하지 않았습니다.
문제 2.
632,
compile 시에 pattern matching이 빠뜨리는 것이 있다는 메세지가 나옵니다.
에러는 아니지만, 온전한 함수가 아니라는 경고이므로 주의하시기 바랍니다.
632, 766, 805
zipper의 타입 역시, int list * int list -> int list 이지,
int list -> int list -> int list 이 아닙니다.
문제 3.
805,
함수 이름을 zipperN이 아닌 zipperM으로 작성하였습니다.
766
Forward declaration - nil 함수를 만들어서 쓰는 경우,
이것의 정의가 이것을 사용하는 부분보다 앞에 있어야 합니다.
문제 4.
632, 952, 766
natadd, natmul 함수의 타입은
nat * nat -> nat 이지,
nat -> nat -> nat 가 아닙니다.
805
문제 풀이와 관련없는 함수가 정의되어 있는데, 이 함수의 타입에 대한 정의가 빠져 있습니다. 제거 하였습니다.
문제 5.
952,
compile 시에 pattern matching이 빠뜨리는 것이 있다는 메세지가 나옵니다.
에러는 아니지만, 온전한 함수가 아니라는 경고이므로 주의하시기 바랍니다.
153, 952
eval 함수의 타입은
formula -> bool 이지,
formula -> formula 가 아닙니다.
bool 타입의 값은 true 나 false를 갖습니다.
TRUE / FALSE는 bool 타입의 값이 아닌 formula 타입의 값입니다.
문제 6.
153,
제가 정의해드린 exception은 DivideByZero이지, DividedByZero가 아닙니다.
문제 7.
955
코드에 커맨트를 다는 과정에서 짝이 맞지 않는 커맨트가 만들어져서 컴파일 되지 않습니다.
문제 8.
153, 805
숙제에서 요구한 세 함수가 모두 구현되지 않았습니다.
929, 766, 792, 805, 842, 919
문제 8에서 정의한 exception은
코드: |
exception NONAME of string
|
입니다. 이것을 사용할 때에는
코드: |
raise (NONAME "This is Error String for this Exception")
|
와 같이 사용합니다.
여기서 괄호를 제거하면, 다음과 같이 괄호가 쳐져 있는 의미가 됩니다.
코드: |
((raise NONAME) "This is Error String for this Exception")
|
따라서 이것은 옳지 않습니다.
앞으로 이점을 주의하시기 바랍니다.
792
1byte의 오타가 있었습니다. 삭제하였습니다.
866
함수 이름은 goRight, goUp, goDown 입니다.
goright, goup, godown 이 아닙니다. _________________ - soon@ropas
공순호 가 2009년3월31일 11:18에 수정함, 총 2 번 수정됨 |
|