이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
박준호
가입: 2012년 9월 15일 올린 글: 71
|
올려짐: 2013년11월25일 19:00 주제: Ocaml 함수 정의 질문입니다. |
|
|
let (@+) a (b,c) = fun x -> if x = b then c else a x;;
은 (fun x -> raise Not_found) @+ (1,2) 로 실행해야만 하고
let a b (c,d) = fun x -> if x = c then d else b x;;
은 a (fun x -> raise Not_found) (1,2) 로만 실행해야 하는데,
함수 정의에 대해서 (@+)가 파라미터의 앞뒤를 바꿔주는 것 같은데, 이유를 모르겠습니다. |
|
위로 |
|
|
박준호
가입: 2012년 9월 15일 올린 글: 71
|
올려짐: 2013년11월25일 19:09 주제: |
|
|
게다가 () 안에 들어가는 문자는 일부 특수문자밖에 안되는걸로 되어있는것 같아요..
왠지 a + b 를 정의하기 위해 특수하게 만든것같은데...
(+) a b 가 a + b랑 같이 되어있는것 같아요 |
|
위로 |
|
|
박준호
가입: 2012년 9월 15일 올린 글: 71
|
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2013년11월26일 9:40 주제: |
|
|
네 괄호로 정의한 함수는 infix operator로 쓸수 있게됩니다.
let (|>) a f = f a
이런식으로 쓰면 다음과같이 활용할 수 있는데
a |> f
f라는 함수에 a라는 값을 인자로 먹인다
뭐 이런 느낌을 줄수 있겠지요.
let (@+) f (b,c)
같은경우에는 다음과같이 쓰면
dictionary @+ (cond,value)
기존의 dictionary에 cond->value를 추가한다 정도로 생각할수 있겠죠.
|
|
위로 |
|
|
|