이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
윤형석
가입: 2012년 9월 5일 올린 글: 26
|
올려짐: 2012년11월16일 0:46 주제: 숙제 6-1에서 제공된 k -> sm5 인터프리터가 이상합니다. |
|
|
주어진 뼈대코드로, 다음의 k-- 코드를 실행시키면 정상적인 결과와 일치하지 않습니다.
코드: |
let i := 0 in
for i := 1 to 10 do
(write i;
i := i+1)
(* result : 1 2 3 4 5 6 7 8 9 10 *)
|
결과는 주석에 있듯 1 2 3 4 5 6 7 8 9 10 이어야 하는데, 주어진 인터프리터를 이용해 실행시키면 1 3 5 7 9가 나옵니다.
확인부탁드립니다. |
|
위로 |
|
|
유진선
가입: 2011년 10월 5일 올린 글: 25
|
올려짐: 2012년11월16일 0:52 주제: |
|
|
hw4_1.ml 코드를 복사해서 trans_k.ml을 바꾼후 실행하면 제대로된 결과가 나오네요
|
|
위로 |
|
|
최성준
가입: 2011년 10월 28일 올린 글: 8
|
올려짐: 2012년11월16일 10:05 주제: 답이 잘못나오는 예제 더 있습니다. |
|
|
코드: |
(* TRICKY FOR *)
let i := (-1) in
( (for i := 1 to 5 do
(write i)
); write i)
(* RESULT : 1 2 3 4 5 5 *)
|
이것도 -k로 실행시키면 결과가 제대로 나오지만 -sm5로 돌리면 1 2 3 4 5 6으로 나옵니다. 그래도 숙제 hw6_1.ml을 제대로 작성했다면 -sm5했을 때랑 그냥 돌릴 때랑만 결과가 같으면 되는 거죠??
코드: |
(* TRICKY! - NESTED FOR TEST 2 *)
let i := 0 in
for i := 1 to 5 do
(for i := 1 to 5 do
(write i; i := i+3)
; write i)
(*result : 1 2 3 4 5 8 1 2 3 4 5 8 1 2 3 4 5 8 1 2 3 4 5 8 1 2 3 4 5 8 *)
(* CORNER CASE TEST *)
let x := 0 in
let i := 0 in
for i := 0 to (x := x+1; 10) do
i := i + 100 ;
write i;
write x;
write -1
(*RESULT : 110 1 -1 *)
let x := 0 in let i := 0 in let j := 0 in
for i := 0 to (for j := 0 to (i := i+1; 3) do j:=j+4; j) do write i
(* RESULT : 0 1 2 3 4 5 6 7 *)
|
이것들도 답이 이상하게 나옵니다. 공통적으로 for가 문제인 것 같습니다. |
|
위로 |
|
|
이승중
가입: 2010년 6월 22일 올린 글: 561
|
올려짐: 2012년11월16일 11:28 주제: |
|
|
네 뼈대코드 다시 확인해 보도록 하겠습니다.
지금도 sm5랑 sonata 결과만 같으면 됩니다. |
|
위로 |
|
|
|