 |
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
정원국
가입: 2011년 3월 15일 올린 글: 6
|
올려짐: 2011년3월18일 6:08 주제: Cons 명령어에 대한 질문입니다.. |
|
|
exercise1을 풀면서 생긴 궁금증입니다...
제가 짠 mem함수를 예로들면,
type mylist = Nil | Cons of (int*mylist)
let rec mem i l =
match l with
| Nil -> false
| Cons (a,l') -> if a==i then true else mem i l';;
위와같이 코드를 짰는데요
mem 0 Cons(1, Cons(2, Nil));; <- 이런식으로 실행하면
Error: This function is applied to too many arguments,
maybe you forgot a `;'
이런 에러메세지가 뜨고
mem 0 (Cons(1, Cons(2, Nil)));; <- 또는
let test = Cons(1, Cons(2, Nil));;
mem 0 test;;
위와 같은 실행은 오류없이 잘 작동하더라고요.
지금 제 현상이 정상인지, 또 왜그렇게 되는건지 궁금합니다.
아마 Cons 함수 자체에 뭔가 있는거 같은데 잘 모르겠네요... |
|
| 위로 |
|
 |
이원찬
가입: 2010년 3월 4일 올린 글: 34
|
올려짐: 2011년3월18일 9:49 주제: |
|
|
이건 Cons의 문제가 아니라 OCaml 문법 문제입니다.
mem 0 Cons(1, Cons(2, Nil))
은 붙여서 써놓으셨지만 실은
mem 0 Cons (1, Cons (2, Nil))
와 같은 표현입니다.
즉, mem 함수에 세 인자, 0, Cons, (1, Cons (2, Nil))을 넘기고 있는 것이죠.
따라서, 두 번째 인자가 Cons가 아니라 Cons로 만들어지는 전체가 되는 것을
괄호로 구분해주셔야 합니다. |
|
| 위로 |
|
 |
김수린

가입: 2011년 3월 18일 올린 글: 3 위치: SNU에서 가장 높은곳
|
올려짐: 2011년3월18일 10:31 주제: |
|
|
| 그럼 ()로 묶어줘야되는게 정상인건가요? |
|
| 위로 |
|
 |
정원국
가입: 2011년 3월 15일 올린 글: 6
|
올려짐: 2011년3월18일 16:43 주제: 아하.. |
|
|
| 답변감사합니다 |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|