게시판 인덱스

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

expansive 질문입니다

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



가입: 2009년 9월 19일
올린 글: 35

올리기올려짐: 2009년11월24일 1:28    주제: expansive 질문입니다 인용과 함께 답변

교재 189쪽에 보면 expansive(E1 E2) = true라고 돼 있는데

이해가 안됩니다

expansive(E1) or expansive(E2)가 아닐런지,,,
위로
사용자 정보 보기 비밀 메시지 보내기
허기홍



가입: 2007년 9월 27일
올린 글: 231

올리기올려짐: 2009년11월24일 20:28    주제: 인용과 함께 답변

글쎄 저도 잘 이해가 안가네요.
교수님께 여쭤보겠습니다.

true라고 해도 안전성을 해치지는 않으니 제출은 그렇게 하셔도 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
허기홍



가입: 2007년 9월 27일
올린 글: 231

올리기올려짐: 2009년11월24일 21:58    주제: 인용과 함께 답변

아직 교수님께 여쭤보지는 않았지만..
제가 찾아본 결과를 말씀드리죠.

http://www.lfcs.inf.ed.ac.uk/reports/88/ECS-LFCS-88-54/ECS-LFCS-88-54.pdf

위 논문은 side effect가 있는 언어의 타입 일반화에서 나오는 문제와 그 해결책을 제시한 Tofte라는 사람의 박사 논문입니다. expansive에 대한 설명도 나와있습니다.


함수 적용(APP) 가 왜 expansive 이냐면,
부분 적용(partial evaluation) 시 문제가 되기 때문입니다.

저 논문에 있는 예제를 우리가 익숙한 형태로 옮겨보죠.

코드:

let mk_sham_id = fun  x ->
  let own = ref x
  in  (fun y -> let temp = !own in (own:= y; temp))
in
  let sham_id = mk_sham_id nil in
    sham_id [true];
    List.hd (sham_id [1]) + 1


이처럼 부분 적용했을 때 그 뒷일을 보장하지 못하기 때문에 안전하게 expansive라고 보는 것입니다.


허기홍 가 2009년11월25일 10:48에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이광근



가입: 2005년 8월 29일
올린 글: 68

올리기올려짐: 2009년11월25일 9:58    주제: Re: expansive 질문입니다 인용과 함께 답변

이중호 씀:
교재 189쪽에 보면 expansive(E1 E2) = true라고 돼 있는데

이해가 안됩니다

expansive(E1) or expansive(E2)가 아닐런지,,,


예를들어
f 10
이라는 식을 생각해 봅시다. (f = E1, 10 = E2)
f라는 변수식과 10이라는 식은 모두 expansive하지 않죠.
하지만, 그 f함수가 실행중에는 expansive할 수 있습니다.

일반적으로 함수적용식 E1 E2에서
과연 어떤함수가 불리워질 지 알기가 어렵습니다.
함수가 꼭 정의된 이름으로 불리는 것은 아니기 때문입니다.
알려면 복잡한 분석이 필요합니다.
복잡한 분석은 피하면서 안전하게 갈 수 있겠지요.
그래서 E1 E2식의 경우
무조건 true로 한 것입니다.

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

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


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