게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

Cons 명령어에 대한 질문입니다..

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2011)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
정원국



가입: 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    주제: 아하.. 인용과 함께 답변

답변감사합니다
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2011) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay