게시판 인덱스

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

제공된 테스트케이스에 대해 질문입니다.

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



가입: 2006년 9월 8일
올린 글: 17

올리기올려짐: 2006년9월27일 21:51    주제: 제공된 테스트케이스에 대해 질문입니다. 인용과 함께 답변

제공된 테스트케이스 중에 match.k- 를 살펴보던 중 이상한 점이 발견되었습니다.

예를 들어,
코드:
while (
 let
  terminateGame := 1
 in (
  (if (now isFirst) then (
   (write 119112114)
  ;(read terminateGame)
  ))
  ;(not (terminateGame < 1))
 )
)
do (


이런 부분이 있는데요.. (주석 생략)

수업시간에 배운 syntax에서는 while E do S 라고 되어 있습니다.

그러면 이 테스트케이스는 에러가 나야 정상이지요?
while S do S 이니까요..
위로
사용자 정보 보기 비밀 메시지 보내기
김지훈



가입: 2006년 9월 12일
올린 글: 11

올리기올려짐: 2006년9월28일 6:32    주제: 인용과 함께 답변

in 안의 body를 보시면 마지막에 (not (terminateGame <1)) 이 리턴되고 있습니다. 이것이 bool값이기 때문에 실행 가능해야 할 듯 합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
조은상



가입: 2006년 9월 8일
올린 글: 17

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

LET문에서 (not (terminateGame < 1)) 은 해석되어 값을 내놓습니다. 그 값은 메모리 어딘가에 있겠지요. 그리고 LET문은 메모리를 내놓습니다.

WHILE문은 프로그램식을 받아야 하는데, 이 경우는 메모리가 들어갑니다.

수업시간에 배운 의미대로라면, LET에서 값 전달은 해당 LET 이전에 정의된 free id를 통해서 넘겨주어야 할 것 같습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
장민석



가입: 2006년 9월 5일
올린 글: 165

올리기올려짐: 2006년9월28일 11:46    주제: 인용과 함께 답변

엄밀히 따지면 조은상님 말씀이 맞는 것 같습니다만,,
원래 let문의 취지를 생각한다면 let E in S 에서 S가 표현식이 되는 것도 허용하는 게 좋을 것 같습니다. 즉 LET(..)의 함수값이 메모리이거나 value인 것을 모두 허용하자는 것이지요.

강의노트에

(전제 생략...)
e' M' ㅏS ⇒ v
______________________
e,M ㅏ let x:=E in S ⇒ v

이런 걸 추가하자는 거죠.
위로
사용자 정보 보기 비밀 메시지 보내기
조은상



가입: 2006년 9월 8일
올린 글: 17

올리기올려짐: 2006년9월28일 12:40    주제: 인용과 함께 답변

네. 저도 말씀하신 대로 값을 내놓는 방법으로 추가해서 match.n- 를 실행가능하도록 만들어보기도 했습니다.

그런데 LET이 값을 내어놓는다면, 변수의 scope을 지정한다는 의도와 맞지 않는 것 같습니다. variable scoping 외에 다른 취지가 있었나요?

함수값이라고 표현하셔서 LET이 함수인가.. 하고도 생각해봤습니다. 그런데 아직 배우지 않은 부분이라 강의 노트만 읽어보기는 했지만, K- 에서는 HW3에서 도입할 procedure도 값을 내놓지는 않는 것 같습니다.

특히 앞으로 구현하게 될 HW3의 Exercise 1을 보시면, HW2와는 다르게 주석이 붙어 있는데 LETV(지금의 LET)는 variable binding, LETF는 procedure binding이라고 되어 있네요.. LET의 역할이 variable binding이라고 한정지으려는 의도로 적으신게 아닌가 합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
박대준



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

올리기올려짐: 2006년9월28일 14:32    주제: 인용과 함께 답변

조은상 씀:
그런데 LET이 값을 내어놓는다면, 변수의 scope을 지정한다는 의도와 맞지 않는 것 같습니다. variable scoping 외에 다른 취지가 있었나요?

let x=e1 in e2에서 내어놓는 값은 e2를 계산한 값입니다.
변수의 scope을 지정한다는 것은 x라는 변수의 scope을 "e2를 계산하는 동안"으로 한정하겠다는 것입니다.
따라서 e2의 계산이 끝난 후, 결과값을 let밖으로 내보내는 것과 변수의 scope을 제한하는 것과는 무관합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2006) 시간대: GMT + 9 시간(한국)
페이지 11

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


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