게시판 인덱스

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

Ocaml 함수 정의 질문입니다.

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2013)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
박준호



가입: 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

올리기올려짐: 2013년11월25일 19:15    주제: 자답입니다 인용과 함께 답변

http://caml.inria.fr/pub/docs/manual-ocaml/lex.html#infix-symbol

이런 법칙이 있네영....괄호 안에 들어갈 수 있는 규칙
위로
사용자 정보 보기 비밀 메시지 보내기
강동옥



가입: 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를 추가한다 정도로 생각할수 있겠죠.
Smile
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2013) 시간대: GMT + 9 시간(한국)
페이지 11

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


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