게시판 인덱스

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

3-1 질문입니다.

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2013)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
박준호



가입: 2012년 9월 15일
올린 글: 71

올리기올려짐: 2013년10월4일 19:45    주제: 3-1 질문입니다. 인용과 함께 답변

0. READ
semantics의 n은 read_int로 받아오면 되나요?

1. WRITE
print_int와 print_newline을 사용해야 할 것 같은데,
semantics에서 v가 아니라 n 이어야 할 것 같은데, 맞나요??

2. CALLV
sigma' {x1->l1}...{xn->ln}{f-><(x1~xn),e',sigma'>}, Mn{...}
에서, f-> 안에 들어가는 sigma' 는 {xi->li}(i=1~n) 으로 환경변수가 바뀐 sigma'
인가요, 아니면, 우측에서 sigma(f)에 저장되어있던 sigma' 그대로인가요?
semantics 정의대로라면 후자인 것 같은데..

3. "K.run(K.emptyMemory, K.emptyEnv, S)는 프로그램 S를 실행시키게 되는데, 성공적으로 끝나면 최후의 값을 내어주게 됩니다." 라고 되어있는데,
./run examples test1.k- 를 보면, write x+y로 되어있어서
3이 출력되지만, write의 semantics를 보면, 출력하는 값을 리턴하기도 합니다.
다른것도 돌려보면, 최후의 값을 출력하지는 않는 것 같은데, 출력하게 해주어야 하나요???
그렇게 되면 (*implement it!*) 부분이 아니라,
let run (mem, env, pgm) =
let (v,_) = semantics mem env pgm in
print_value v;
v
같이 해주어야 할 것 같습니다.

4. CALLV나 CALLF RECT 등에서 N개의 엘리먼트 페어를 이용하는경우가 많은데, 서로의 리스트들의 길이가 다르게 될 경우 exception 처리는 어떻게 해주어야 하나요???
(ex : CALLV에서 f(e1~en), env(f) = <(x1~xm) e' env'> 에서, f의 argument로 넘겨주는것과 정의할 때 x1~xm을 하는건 서로 다른부분에서 하는거라 넘겨주는argument 길이가 차이가 나는 경우)

5. RECF는 빈 레코드를 넣는 경우인가요?
위로
사용자 정보 보기 비밀 메시지 보내기
최준원



가입: 2007년 3월 30일
올린 글: 149

올리기올려짐: 2013년10월4일 21:39    주제: 인용과 함께 답변

인용:
0. READ
semantics의 n은 read_int로 받아오면 되나요?

네, 맞습니다 Smile
(스펙 정리 게시물에 추가)

인용:
1. WRITE
print_int와 print_newline을 사용해야 할 것 같은데,
semantics에서 v가 아니라 n 이어야 할 것 같은데, 맞나요??

print_int 는 사용하시는 것이 맞지만, print_newline 은 사용하시면 안됩니다.
정의 그대로 write e 는 e 를 계산한 값만 출력합니다.
(스펙 정리 게시물에 추가)

인용:
2. CALLV
sigma' {x1->l1}...{xn->ln}{f-><(x1~xn),e',sigma'>}, Mn{...}
에서, f-> 안에 들어가는 sigma' 는 {xi->li}(i=1~n) 으로 환경변수가 바뀐 sigma'
인가요, 아니면, 우측에서 sigma(f)에 저장되어있던 sigma' 그대로인가요?
semantics 정의대로라면 후자인 것 같은데..

semantics 문서에 있는 정의 그대로입니다.
sigma' 의 정체는 sigma(f) = <...> 에서 확인할 수 있습니다.
(그래도 sigma' 가 무엇인지 헷갈리시면 LETF semantics 를 잘 살펴봐 주세요)
참고로, sigma'{x1->l1} 는 현재 sigma' 환경에 x1->l1 을 추가한 환경을 의미합니다.

인용:
3. "K.run(K.emptyMemory, K.emptyEnv, S)는 프로그램 S를 실행시키게 되는데, 성공적으로 끝나면 최후의 값을 내어주게 됩니다." 라고 되어있는데,
./run examples test1.k- 를 보면, write x+y로 되어있어서
3이 출력되지만, write의 semantics를 보면, 출력하는 값을 리턴하기도 합니다.
다른것도 돌려보면, 최후의 값을 출력하지는 않는 것 같은데, 출력하게 해주어야 하나요???

출력하시면 안됩니다.
입력/출력은 read/write 로만 이루어집니다.
(스펙 정리 게시물에 추가)

인용:
4. CALLV나 CALLF RECT 등에서 N개의 엘리먼트 페어를 이용하는경우가 많은데, 서로의 리스트들의 길이가 다르게 될 경우 exception 처리는 어떻게 해주어야 하나요???

어떤 예외든 내 주시고 처리는 따로 안해주셔도 됩니다.
OCaml 표준 예외 중 하나인 Invalid_argument 예외를 내 주실 것을 권장합니다.
(스펙 정리 게시물에 추가)

인용:
5. RECF는 빈 레코드를 넣는 경우인가요?

네, 맞습니다.


도움이 되셨기를 바랍니다 Smile
위로
사용자 정보 보기 비밀 메시지 보내기
김남현



가입: 2012년 9월 14일
올린 글: 19

올리기올려짐: 2013년10월11일 13:30    주제: 인용과 함께 답변

1. 질문처럼 WRITE의 semantics는 v를 결과로 내놓는데, 스펙 정리 게시물에는 print_int를 쓰라고 되어있습니다.
그러면 WRITE의 결과는 v로 내놓으나, n인 경우에 한해서 화면에 출력하라는 것인가요?
아니면 WRITE의 결과는 n만 나올 수 있는 것인가요?(즉, 나머지 경우에는 print_int가 내는 exception을 그냥 사용하나요?)
위로
사용자 정보 보기 비밀 메시지 보내기
최준원



가입: 2007년 3월 30일
올린 글: 149

올리기올려짐: 2013년10월11일 13:34    주제: 인용과 함께 답변

인용:
그러면 WRITE의 결과는 v로 내놓으나, n인 경우에 한해서 화면에 출력하라는 것인가요?

네, 정수에 대해서만 출력하시면 됩니다.
나머지 경우에는 예외를 내시면 되고요.
예외는 정리 게시물에도 있지만 Error 예외를 쓰시기를 권장합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
최준원



가입: 2007년 3월 30일
올린 글: 149

올리기올려짐: 2013년10월11일 13:38    주제: 인용과 함께 답변

그리고 의미 문서의 WRITE 부분에서,
e => v 는 e => n 으로, write e => v 는 write e => n 으로 생각해 주시면 됩니다 Smile
(스펙 정리 게시물에 추가)
위로
사용자 정보 보기 비밀 메시지 보내기
방인혁



가입: 2012년 9월 13일
올린 글: 18

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

그러니까 write를 여러 번 사용해서 숫자가 여러 개 출력될 경우 그 숫자들이 그냥 한 줄에 쭉 나열되면 되는건가요?
예를 들어 피보나치 수열이면
112358 이렇게요?
위로
사용자 정보 보기 비밀 메시지 보내기
최준원



가입: 2007년 3월 30일
올린 글: 149

올리기올려짐: 2013년10월11일 14:12    주제: 인용과 함께 답변

인용:
그러니까 write를 여러 번 사용해서 숫자가 여러 개 출력될 경우 그 숫자들이 그냥 한 줄에 쭉 나열되면 되는건가요?

네, 맞습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2013) 시간대: GMT + 9 시간(한국)
페이지 11

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


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