이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김현식
가입: 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를 새로운 시작점으로 수행하게 됩니다. |
|
위로 |
|
|
|