이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김진현
가입: 2005년 9월 20일 올린 글: 91 위치: SNUCSE OPT. lab.
|
올려짐: 2005년10월6일 19:06 주제: Side Effect에 대해서 |
|
|
주어진 E들 중에서, E1 과 E2 를 품고있는 경우에, E1과 E2가 계산해내는 값의 타입이 중요한 경우가 있습니다.
(FOR, LESS 등)
이 경우 두 가지의 구현이 있으리라 생각합니다.
* E1 을 실행하고, 그 값의 타입을 살핀 후, 타입이 맞는 경우 E2 실행
* E! 을 실행하고, E2를 실행한 후, 각각 타입이 맞는지 살피기
물론 올바른 프로그램의 경우에는 두 경우 모두 별 문제가 없습니다.
하지만 E1 으로 얻어지는 메모리 M1 으로 E2를 실행하는 경우라면 문제가 됩니다.
E1을 실행했을 때, 타입이 맞지 않는 값이 계산되고,
M1 을 잘못 건드려 E2 에서 타입 외의 Exception을 발생시킬 수 있습니다.
어차피 익셉션이 발생되겠지만, 다른 익셉션이 발생할 수 있습니다.
예를 들어,
let x = 1 in FOR(x, SEQ( x:= 0, true), 2/x, something)
과 같은 프로그램이 그렇습니다.
E1, E2 를 모두 실행한 후 타입을 살펴본다고 하면,
2/x 를 계산하는 과정에서 0으로 나누는 익셉션이 발생합니다.
하지만 E1을 먼저 계산한 후 타입을 생각하면,
FOR 안에서 int 아닌 값이 있다는 익셉션이 발생합니다.
(그리고 E2를 실행하지 않을 수도 있겠지요)
프로그램이 멎는다는 점은 같지만, 그 멎는 이유가 조금 다른데,
이런 경우도 문제가 될 수 있는지 궁금합니다. _________________ The kingdom of heaven has been forcefully advancing, and forceful men lay hold of it. |
|
위로 |
|
|
김덕환
가입: 2005년 8월 29일 올린 글: 190
|
올려짐: 2005년10월6일 20:55 주제: Re: Side Effect에 대해서 |
|
|
김진현 씀: | 주어진 E들 중에서, E1 과 E2 를 품고있는 경우에, E1과 E2가 계산해내는 값의 타입이 중요한 경우가 있습니다.
(FOR, LESS 등)
이 경우 두 가지의 구현이 있으리라 생각합니다.
* E1 을 실행하고, 그 값의 타입을 살핀 후, 타입이 맞는 경우 E2 실행
* E! 을 실행하고, E2를 실행한 후, 각각 타입이 맞는지 살피기
|
FOR의 경우에는 E1을 실행하고 타입이 맞는지 검사합니다. 정의에 보면 E1을 계산한 결과값이 n1(정수)이 되어야 한다고 나와있습니다. n1이 만들어지지 못한다면 M1도 만들어지지 못하는 것으로, E2를 계산한다는 것은 말이 되지 않습니다.
LESS의 경우에는 모든 E1의 값의 타입에 대해 LESS가 정의되어 있습니다. 따라서, E1의 값의 타입만으로는 에러가 나는 경우는 없습니다.
의미를 정의할 때 n, b, v 변수는 매우 조심스럽게 사용하였습니다. 타입과 관련된 의문 사항은 그 변수들을 잘 들여다 보면 쉽게 해결되실 수 있을 거라고 봅니다.
@ 마감까지 세 시간 남았습니다. _________________ TheyAreAsSmartAsYouAre |
|
위로 |
|
|
김진현
가입: 2005년 9월 20일 올린 글: 91 위치: SNUCSE OPT. lab.
|
올려짐: 2005년10월6일 21:01 주제: |
|
|
역시 n, b 와 같은 것들은 타입을 의미하는 거였네요 ^^;
이런 부분이 문제가 되는 건, FOR 부분 뿐이겠죠?
(확인중)
확인하였습니다 _________________ The kingdom of heaven has been forcefully advancing, and forceful men lay hold of it. |
|
위로 |
|
|
김덕환
가입: 2005년 8월 29일 올린 글: 190
|
올려짐: 2005년10월6일 21:07 주제: |
|
|
김진현 씀: |
역시 n, b 와 같은 것들은 타입을 의미하는 거였네요 ^^;
|
문서 제일 처음 부분에 각 변수가 어떤 집합의 원소인지(즉, 어떤 타입의 값들을 나타내는 변수인지)를 적어놓았습니다 꼼꼼히 봐주세요. _________________ TheyAreAsSmartAsYouAre |
|
위로 |
|
|
김진현
가입: 2005년 9월 20일 올린 글: 91 위치: SNUCSE OPT. lab.
|
올려짐: 2005년10월6일 21:09 주제: |
|
|
처음 부분에 주어진 건 n, b 입니다.
n1, n2, b1, b2 가 아니라요 ^^;;
그래서 혹시나 하는 생각을 했던 거구요 _________________ The kingdom of heaven has been forcefully advancing, and forceful men lay hold of it. |
|
위로 |
|
|
서상원
가입: 2005년 9월 27일 올린 글: 33
|
올려짐: 2005년10월6일 21:43 주제: |
|
|
김진현 씀: | 역시 n, b 와 같은 것들은 타입을 의미하는 거였네요 ^^;
이런 부분이 문제가 되는 건, FOR 부분 뿐이겠죠?
(확인중)
확인하였습니다 |
FOR 부분 만은 아니지 않나요?
INF_LOOP을 무한 루프를 도는 식이라고 가정하면
"ADD (TRUE, INF_LOOP)"만 하더라도 결과가 달라지지 않나요?
덕분에 열심히 고치는 중입니다만... (계산 순서와 타입 체크 순서는 상관없겠지라고 생각했었는데.. 너무 안일한 생각이었던 모양입니다. ) |
|
위로 |
|
|
이기석
가입: 2005년 10월 3일 올린 글: 33
|
올려짐: 2005년10월6일 22:07 주제: |
|
|
semantic을 엄밀히 따르자면
고쳐야 할 부분이 많은것 같네요 ㅎㅎ |
|
위로 |
|
|
김진현
가입: 2005년 9월 20일 올린 글: 91 위치: SNUCSE OPT. lab.
|
올려짐: 2005년10월6일 22:11 주제: |
|
|
binary operation 만 고치면 되지 않나요?
binary relation 두 개는 타입 덕택에 어차피 둘 다 계산해봐야 할테고..
그 외에는 별 문제 없을 듯 한데.... 제가 놓치고 있는 부분이 있나요? _________________ The kingdom of heaven has been forcefully advancing, and forceful men lay hold of it. |
|
위로 |
|
|
서상원
가입: 2005년 9월 27일 올린 글: 33
|
올려짐: 2005년10월6일 23:02 주제: |
|
|
E1, E2 문제는 FOR, binary operation이 다 인것 같습니다.
(이제와서 더 있다고 해도 곤란하죠. -_-;; ) |
|
위로 |
|
|
|