게시판 인덱스

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

Ocaml 문법에 대해서

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



가입: 2017년 9월 5일
올린 글: 24

올리기올려짐: 2017년9월18일 14:55    주제: Ocaml 문법에 대해서 인용과 함께 답변

Ocaml에서 match with 내부나
for문 등 let으로 함수 정의할 때
반환값 말고 다른 문장을 적을 수 없나요??

예를 들어, c언어에서는 return 이 있어서 그 전까지
다른 문장을 쓰고 ; 하면 넘어갔었는데
Ocaml에서는 let in 말고는 쓸 수 없나요??

그리고 ocaml 코드 내에서 ; 의 의미가 궁금합니다!

c언어, java 말고 ocaml은 처음이라 많이 불편하네요 ㅜㅜ 감사합니다!!
위로
사용자 정보 보기 비밀 메시지 보내기
로파스
Site Admin


가입: 2012년 9월 9일
올린 글: 280

올리기올려짐: 2017년9월18일 15:17    주제: 인용과 함께 답변

문제가 생긴 코드를 첨부해주시면 좀더 자세히 도와드릴 수 있을 것 같습니다.

let in 으로 모든 함수를 표현할 수 있는 것이 상위 언어인 오켐엘의 매력입니다.

말씀하신대로 함수내부에서 for문 등을 돌리시려면 튜토리얼에서 말씀드렸던

imperative 스타일의 코딩방법을 적용하셔야 하는데,

개인적으로 오켐엘에서 이러한 방법을 쓰는 것은 추천드리지 않습니다.

익숙해지시면 재귀함수와 let in 만으로도 모든 함수를 구현하실 수 있습니다.

실제로 오켐엘을 쓸때 imperative 스타일의 요소를 가미하는 것이 더 편한 경우도 있습니다만

적어도 숙제에서는 조교측에서 그러한 요소를 모두 가미한 뼈대코드를 제공해드리거나,

그 외의 경우에서는 사용하실 필요가 전혀 없으십니다.(사용하시면 안된다는 것이 아니라, 사용하면 코드가 더 복잡해질 가능성이 더 높습니다.)

ocaml의 imperative한 스타일 코딩에 대해 자세히 알아보시려면 ocaml홈페이지의 가이드를 참고하시기 바랍니다.

-조교 드림.
위로
사용자 정보 보기 비밀 메시지 보내기
조상우15



가입: 2015년 9월 7일
올린 글: 27

올리기올려짐: 2017년9월18일 16:07    주제: 세미콜론의 의미 인용과 함께 답변

OCaml에서 세미콜론 하나( ; )의 의미는 List elements 간의 Delimiters 입니다
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
신원준



가입: 2017년 9월 12일
올린 글: 23

올리기올려짐: 2017년9월19일 14:46    주제: 인용과 함께 답변

세미콜론은 syntax를 구분하는 역할을 합니다.
(C에서와 마찬가지로, 개행만으로는 syntax를 구분할 수 없습니다.)

이는 currying이라는 문법 특징을 고려하면 좀 더 이해하기 쉬운데,

이를테면
코드:
let print s = print_endline s;;

라면 print 의 타입은 "string -> unit"이 됩니다.

여기서
코드:
print "hi"
print "bye"

라고 하면 이는 의미적으로
코드:
print "hi" print "bye"

인데 이것의 의미는 currying에 의해
print에 전달인자로 "hi"를 준 뒤, 그 리턴값에 전달인자로 print를 주고,
이어서 그 리턴값에 "bye"를 주라는 뜻입니다.

그러면 print "hi"의 리턴값은 unit (C로 치면 void) 이므로 함수가 아니어서 컴파일 오류를 발생시킵니다.

따라서 사이에 세미콜론을 넣어서 둘을 구분시켜야 합니다.
코드:
print "hi";
print "bye"

라고 하면 print "hi"의 리턴값으로 currying을 하지 않고, 다음 print를 새로운 시작점으로 수행하게 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2017) 시간대: GMT + 9 시간(한국)
페이지 11

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


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