게시판 인덱스

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

숙제 1-3 에 대한 질문

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



가입: 2015년 9월 3일
올린 글: 17

올리기올려짐: 2015년9월13일 15:51    주제: 숙제 1-3 에 대한 질문 인용과 함께 답변

조교님 안녕하세요. 수고 많으십니다.

추가로 과제중에 질문이 생겨서 글을 남깁니다.

iter(n,f)

스펙에 따라서 위와 같은 함수를 생각해보면 int * (int -> int) -> (int -> int) 형으로 선언이 되어야 할 것 같습니다.

궁금한 것이 하나 있는데요. 합성 함수를 생각해보면 f o g = f(g) 의 형태인데, ocaml에서 이런 연산을 정의하려면 f가 (int -> int) -> (int -> int) 로 정의가 되어 있어야 합니다.

실제로 주어지는 함수 f 는 (int -> int) -> (int -> int) 가 아닌 (int -> int) 형입니다.

이 것을 전환할 수 있는 문법이나, 아이디어가 있을 수 있을까요? 아니면 그 외의 새로운 접근법을 사용해야 할까요?

ps.

혹시 iter(n,f) 함수의 형이 int * (int -> int) -> int -> int 인건가요? 즉 n과 f와 정수 x 를 받아서 정수를 출력하는 함수인건가요?

사실 생각해보면 f o g 라는 함수는 수학적으로 (f o g)(x) 로 정의되기 때문에 정수 x를 인자로 받는 것이 합리적인 것 같다고 생각됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기
최재승



가입: 2012년 9월 10일
올린 글: 211

올리기올려짐: 2015년9월13일 23:14    주제: 인용과 함께 답변

안녕하세요, 프로그래밍 언어 조교 최재승입니다.

인용:
스펙에 따라서 위와 같은 함수를 생각해보면 int * (int -> int) -> (int -> int) 형으로 선언이 되어야 할 것 같습니다.

엄밀히는, int * ('a -> 'a) -> ('a -> 'a) 가 되어야 할 것입니다. f 는 정수 뿐만이 아니라 임의의 타입을 인자로 받아서 같은 타입을 리턴하는 함수이므로, 'a -> 'a 로 써야 합니다.

인용:
궁금한 것이 하나 있는데요. 합성 함수를 생각해보면 f o g = f(g) 의 형태인데, ocaml에서 이런 연산을 정의하려면 f가 (int -> int) -> (int -> int) 로 정의가 되어 있어야 합니다.

f o g = f(g) 라는 표현은 조금 문제가 있는 것 같습니다. (f o g) (x) = f(g(x)) 가 맞는 표현입니다. 여기서 f 함수는 'a -> 'a 타입(e.g. int -> int)이 되는 것이 맞습니다. f는 g(x)를 인자로 받는 것인데, g를 인자로 받는 것으로 착각하신게 아닌가 싶습니다.


인용:
혹시 iter(n,f) 함수의 형이 int * (int -> int) -> int -> int 인건가요? 즉 n과 f와 정수 x 를 받아서 정수를 출력하는 함수인건가요?


위에서 강동호 님이 쓰신 int * (int -> int) -> (int -> int) 표현은, int * (int -> int) -> int -> int 와 같은 의미, 같은 타입입니다. OCaml 튜토리얼 시간에 Currying을 설명드릴 때 이를 언급해드린 적이 있습니다.
http://ropas.snu.ac.kr/~ta/4190.310/15/ocaml_tutorial15f.pdf 의 23 페이지를 참조해 주세요.

조교 드림
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2015) 시간대: GMT + 9 시간(한국)
페이지 11

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


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