이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2013년9월11일 14:16 주제: OCaml 궁금한점 질문 받습니다. |
|
|
오늘 튜토리얼 시간이 짧아서 많은 내용을 소화하지 못했을듯 합니다.
사소한거라도 잘 안되거나 궁금한거 있으면 답글로 달아주세요~
let~in 에 대한 부연설명
OCaml 파일의 가장 상위 let은 in을 붙이지 않습니다. scope는 자동으로 정의한 위치 아래쪽 전체가 됩니다.
let 하위에 정의할때 in을 씁니다.
아래와같이 정의하면 x,y는 a를 정의하는 동안에만 1과 2가 됩니다.
a는 3이 되겠죠. d는 x가 "a"인 scope이므로 "ab"가 됩니다.
코드: |
let x = "a"
let a=
let x = 1 in
let y = 2 in
x+y
let d = x^"b"
|
실행기 다루기
ocaml -init test.ml 을 하면 test.ml을 단순히 실행하지 않고
인터프리터를 실행시켜줍니다.
ledit ocaml 과같이 ledit을 붙여서 실행시키면 인터프리터내에서 방향키나 백스페이스 등을 사용할 수 있습니다.
OCaml에서 main?
OCaml에서 main함수는 없고 단지 다음과같이
let _ 구문을 이용하면 됩니다.
코드: | let msg = "abc"
let _ =
print_endline msg
|
숙제 제출하실때 이렇게 할 필요는 없습니다. 테스트할때만 활용하고
숙제 제출시에는 함수 정의만 제출하시면 됩니다.
여러개의 reference 사용
세미콜론( ; )을 활용합니다.
코드: | let a = ref 0
let b =
let c = !a in
a:= c +1 ;
a:=!a +2 ;
!a |
fun이 아니고 function 뭐지?
function도 역시 fun과 같이 익명함수를 만듭니다.
다만 function은 match with의 기능이 함게 들어있습니다.
코드: | fun x ->
match x with
| A -> a
| B -> b |
를
코드: | function
| A -> a
| B -> b |
와같이 표현할 수 있습니다.
타입 명시
OCaml은 자동으로 타입을 찾아주기 때문에 타입을 명시해줄 필요가 없습니다.
그러나 코드 가독성을 위해 타입을 명시하고 싶다면 다음과같이 콜론 ( : )을 사용할 수 있습니다.
코드: | let add : int -> int -> string =
fun x y ->
string_of_int (x+y) |
물론 동일하게 타입이 맞는지 여부를 OCaml이 확인합니다.
강동옥 가 2013년12월3일 11:27에 수정함, 총 1 번 수정됨 |
|
위로 |
|
 |
김민석
가입: 2012년 9월 15일 올린 글: 40
|
올려짐: 2013년9월18일 3:07 주제: |
|
|
서로 호출하는 함수를 정의할 땐 어떻게 해야 하나요?
let h x =
g x ...
let g x =
h x ...
위와 같이 g에선 h를, h에선 g를 호출하는 경우는 어떻게 하나요? 앞에서 선언 안된 함수는 호출이 안되는것 같은데 방법이 궁금합니다 |
|
위로 |
|
 |
최준원
가입: 2007년 3월 30일 올린 글: 149
|
올려짐: 2013년9월18일 11:24 주제: |
|
|
인용: | 서로 호출하는 함수를 정의할 땐 어떻게 해야 하나요? |
"and" 키워드를 사용하시면 됩니다.
mutually recursive functions 가 아니더라도 rec 을 붙여야 제대로 동작합니다.
아래 예제를 참고하세요
코드: | let rec f x = g x
and g x = x;;
|
|
|
위로 |
|
 |
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2013년9월29일 22:43 주제: |
|
|
타입 정의시에 type constructor는 중복되면 안됩니다
즉, 다음과같이 사용할 수 없습니다.
코드: | type food = Cake | Coffee of string
type dessert = Cookie | Coffee of string | Ade |
다음과같이 unique하게 사용해야 합니다.
코드: | type food = Cake | Coffee of string
type dessert = Cookie | CoffeeAsDessert of string | Ade |
|
|
위로 |
|
 |
|