게시판 인덱스

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

숙제 4-3. 설탕물 질문

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



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2005년10월26일 22:59    주제: 숙제 4-3. 설탕물 질문 인용과 함께 답변

다음 프로그램이 올바른 것인가요?

코드:

      3 let procedure f(x) =
      4   for x := 3 to 7
      5   do
      6     write 1
      7   end
      8 in
      9   let
     10     y := 0
     11   in
     12     call f<y> ;
     13     write y
     14   end
     15 end


결과값은 다음과 같은데요.
코드:

1
1
1
1
1
8


즉, for 문에서 x 가 함수의 인자와 같기 때문에 바인딩이 되어 있어서, 위와 같은 결과가 나오게 됩니다.

그런데, 위의 프로그램이 잘 수행되긴 하지만, 자연스러운 의미를 보자면,
for 문에서의 x 는 let 에서 선언된 후에 사용되어야 하는 것 같습니다.

즉,
코드:

      2 let procedure f(x) =
      3  let x := 1 in
      4   for x := 3 to 7
      5   do
      6     write 1
      7   end
      8  end
      9 in
     10   let
     11     y := 0
     12   in
     13     call f<y> ;
     14     write y
     15   end
     16 end

위와 같이 let 에 의해서 묶여져야 되지 않을까요?

이러한 질문의 요지는..
함수 정의 부분에서, for 문을 사용할 때, 저렇게 let 으로 묶지 않고, 첫번째 코드처럼 사용할 수 있다면,
f<y> 를 녹이는 게 너무 어렵다는 것입니다. ㅠ.ㅠ

다음과 같이 f<y> 를 녹이려고 했는데요..
코드:

     17 let procedure f(x) =
     18   for (x + 0) := 3 to 7
     19   do
     20     write 1
     21   end
     22 in
     23   let
     24     y := 0
     25   in
     26     call f(&y) ;
     27     write y
     28   end
     29 end


for 문에서는 18 번째 줄의 (x + 0) 자리에 x 라는 Id 만 허용되어 있어서, 위와 같은 방법을 사용하지 못하겠더군요.

그래서 for 문을 while loop 으로도 바꾸어보고,
let 을 사용해서 변수를 치환해보기도 했는데,
모든 경우를 간단히 cover 할 수 있는 방법이 떠오르지 않더군요.


read x 와 같은 구문에서도 비슷한 상황이 발생합니다.

즉, 제 질문의 요지는..

함수 정의할 때, 인자가
for 문에서 x 라는 Id 와,
read x 문에서 x 라는 Id 로 사용될 수 있느냐는 것입니다.

사용될 수 있다면, 설탕 녹이기가 참 힘든 것 같습니다.



덧,
혹시라도, 첫번째 코드의 f<y> 를 자연스럽게 녹이는 방법을 아시는 분께서는 무지한 저에게 자그마한 깨달음을 주셨으면 합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
박대준



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2005년10월26일 23:58    주제: 인용과 함께 답변

아, 그리고..

숙제 4.3 은 어떻게 제출하나요?

dissolveCbr 구현 코드를 어디에 적어서 내야하는지요?

일단 이번 숙제 4.1 에서 작성한 "1.n" 코드에

StagedK structure 속의

fun eval _ _ _ 정의하고나서

fun dissolveCbr pgm 을 정의한다음

코드:

   1052         in
   1053           fst (eval environ mem pgm) ;
   1054           fst (eval environ mem (dissolveCbr pgm))
   1055         end
   1056   end


"1.n" 맨 마지막 부분을 위와 같이 수정해서,
설탕이 있는 프로그램과 설탕이 녹은 프로그램 두개를 동시에 실행하도록 했는데,
이렇게 하면 되는 건가요?

아니면 숙제 3.1 의 K structure 에 넣어야 하나요?
위로
사용자 정보 보기 비밀 메시지 보내기
박대준



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2005년10월27일 14:09    주제: 인용과 함께 답변

이 질문에 답변 부탁드립니다.
위로
사용자 정보 보기 비밀 메시지 보내기
김덕환



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

올리기올려짐: 2005년10월27일 18:06    주제: Re: 숙제 4-3. 설탕물 질문 인용과 함께 답변

박대준 씀:

함수 정의할 때, 인자가
for 문에서 x 라는 Id 와,
read x 문에서 x 라는 Id 로 사용될 수 있느냐는 것입니다.


항상 함수 몸체를 변수 선언 구문(let)으로 한꺼풀 감싸고 변수를 인자로 초기화는 방안은 어떨까요?

박대준 씀:

사용될 수 있다면, 설탕 녹이기가 참 힘든 것 같습니다.


교수님께서 이 문제는 원래 도전과제로 내려던 것을 약간 쉽게 고쳐서 출제하신 것이라고 합니다. 문제가 어려운 게 정상입니다. Smile

@ 쉽게 대답할 수 있는 질문에 먼저 대답하다 보니, 대답하는 순서가 질문 순서와 다를 수가 있습니다. 그래도, 조교가 놓치는 일은 거의 없으니 불안해하지 마시기 바랍니다. Cool
위로
사용자 정보 보기 비밀 메시지 보내기
박대준



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2005년10월27일 23:46    주제: Re: 숙제 4-3. 설탕물 질문 인용과 함께 답변

김덕환 씀:
박대준 씀:

함수 정의할 때, 인자가
for 문에서 x 라는 Id 와,
read x 문에서 x 라는 Id 로 사용될 수 있느냐는 것입니다.


항상 함수 몸체를 변수 선언 구문(let)으로 한꺼풀 감싸고 변수를 인자로 초기화는 방안은 어떨까요?


조교님의 대답을 다음과 같이 해석해도 되나요?

함수 선언부분 (즉, LETF (f, x, e1, e2) 에서 e1 부분) 에서
for 문 ( FOR (x, e1, e2 ,e3) ) 이나 read 문 ( READ x ) 을 사용할 때는,

사용전에, 항상 x 를 let 으로 선언해준다고 가정한 후, 문제를 풀어라.

즉, 아래의 두 코드는 있을 수 없다고 가정하라.

코드:

      3 let procedure f(x) =
      4   for x := 3 to 7
      5   do
      6     write 1
      7   end
      8 in
      9   let
     10     y := 0
     11   in
     12     call f<y> ;
     13     write y
     14   end
     15 end

코드:

     53 let procedure f(x) =
     54   read x
     55 in
     56   let x := 0 in
     57     call f<x> ;
     58     write x
     59   end
     60 end


제가 조교님의 말뜻을 제대로 해석한것인가요?
위로
사용자 정보 보기 비밀 메시지 보내기
김진현



가입: 2005년 9월 20일
올린 글: 91
위치: SNUCSE OPT. lab.

올리기올려짐: 2005년10월28일 2:37    주제: 인용과 함께 답변

제 생각에 조교님께서 말씀하시는 건 설탕을 녹인 결과물에 대한 이야기였던 것 같습니다.

그러니까, 녹이는 방법에 대한 조언이셨던 것 같고,

녹일 대상의 속성 규명은 아니셨던 것 같습니다.


덧. for 가 제일 어려워요 ㅜㅜ
_________________
The kingdom of heaven has been forcefully advancing, and forceful men lay hold of it.
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문 MSN 메신저
박소영
손님





올리기올려짐: 2005년10월28일 10:04    주제: Re: 숙제 4-3. 설탕물 질문 인용과 함께 답변

박대준 씀:
김덕환 씀:
박대준 씀:

함수 정의할 때, 인자가
for 문에서 x 라는 Id 와,
read x 문에서 x 라는 Id 로 사용될 수 있느냐는 것입니다.


항상 함수 몸체를 변수 선언 구문(let)으로 한꺼풀 감싸고 변수를 인자로 초기화는 방안은 어떨까요?


조교님의 대답을 다음과 같이 해석해도 되나요?

함수 선언부분 (즉, LETF (f, x, e1, e2) 에서 e1 부분) 에서
for 문 ( FOR (x, e1, e2 ,e3) ) 이나 read 문 ( READ x ) 을 사용할 때는,

사용전에, 항상 x 를 let 으로 선언해준다고 가정한 후, 문제를 풀어라.

즉, 아래의 두 코드는 있을 수 없다고 가정하라.

코드:

      3 let procedure f(x) =
      4   for x := 3 to 7
      5   do
      6     write 1
      7   end
      8 in
      9   let
     10     y := 0
     11   in
     12     call f<y> ;
     13     write y
     14   end
     15 end

코드:

     53 let procedure f(x) =
     54   read x
     55 in
     56   let x := 0 in
     57     call f<x> ;
     58     write x
     59   end
     60 end


제가 조교님의 말뜻을 제대로 해석한것인가요?



음 조교님 말씀대로.. for 밖에를 let으로 감싸고 나면
첫번째 code를 그냥 돌린거랑, 설탕으로 돌린거랑 값이 달라져요-

설탕 돌릴 때는 let으로 감싸고 하니까 당연한 건가요?
아니면 제가 잘 못한 건가요-_-?
위로
김덕환



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

올리기올려짐: 2005년10월28일 11:42    주제: Re: 숙제 4-3. 설탕물 질문 인용과 함께 답변

박대준 씀:

함수 선언부분 (즉, LETF (f, x, e1, e2) 에서 e1 부분) 에서
for 문 ( FOR (x, e1, e2 ,e3) ) 이나 read 문 ( READ x ) 을 사용할 때는,

사용전에, 항상 x 를 let 으로 선언해준다고 가정한 후, 문제를 풀어라.


진현 님 말처럼 그런 경우를 해결하기 위해 교수님께서 제시해주신 하나의 방안입니다.

See also https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=170
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2005) 시간대: GMT + 9 시간(한국)
페이지 11

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


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