이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
송수현
가입: 2006년 9월 4일 올린 글: 25
|
올려짐: 2006년10월30일 21:58 주제: IF 가 return 하는 것은? |
|
|
K-의 정의에서는 물론 unit입니다만,
SM5 에서는 if e1 then e2 else e3 이라면, t / f 시 각각 e2의 결과값 / e3의 결과값을 return할 수 있게 되어있군요.
그렇게 만들고 싶은 생각이 무럭무럭 듭니다만...
역시 unit을 return해야겠죠? K-와 equivalent 하게 하려면.. ㅜㅜ |
|
위로 |
|
|
장민석
가입: 2006년 9월 5일 올린 글: 165
|
올려짐: 2006년10월30일 22:53 주제: |
|
|
어떻게 하든 구현 상 큰 차이는 없는 거 같은데요. 물론 unit값 처리를 해줬다는 전제에서 말이죠. unit이야 if뿐 아니라 다른 커맨드에서도 뱉어내니까요.
제가 방금 수현님 글을 보고 아차 싶어서 수정했거든요(정말 고맙습니다).;; if만 빼먹었다는... |
|
위로 |
|
|
송수현
가입: 2006년 9월 4일 올린 글: 25
|
올려짐: 2006년10월30일 22:55 주제: |
|
|
음..
밑에서 나왔던 것처럼, if가 unit을 리턴하지 않는다면
if (write x) = (if ...) then a else b
에서 a가 실행되어야 하는데 b가 실행되지 않나요?
그렇다면 k-와는 결과값도 다른 것이 아닌지.. |
|
위로 |
|
|
장민석
가입: 2006년 9월 5일 올린 글: 165
|
올려짐: 2006년10월30일 22:58 주제: |
|
|
그렇죠.. 근데 그건 unit값이 야기하는 일반적인 문제이지 if에 국한된 문제는 아니라는 말씀이죠. 그러니까 if가 unit을 안뱉어내더라도 assignv나 write 등도 있다는 거죠.
제가 수현님 말씀을 제대로 이해한 것이 맞는지 모르겠습니다.
아...if가 unit을 뱉어내면 구현이 더 복잡해진다는 뜻으로 제가 오해했나보네요. 단지 구현의 정확성을 위한 질문이었군요. |
|
위로 |
|
|
송수현
가입: 2006년 9월 4일 올린 글: 25
|
올려짐: 2006년10월30일 23:07 주제: |
|
|
네;
제 질문은
x := if bool then 3 else 2 end
bool = true, x = 3
bool = false, x = 2
등을 sm5에서는 쓸 수 있다는 희망적인 것이었지만
(예제로도 통과를 해 봤습니다)
역시 포기하기로 했습니다!
일단 올려놓고 내일 시험공부를 하러 가봐야겠네요; |
|
위로 |
|
|
박대준
가입: 2005년 10월 7일 올린 글: 245
|
올려짐: 2006년10월31일 0:19 주제: |
|
|
네, if 문은 K-의 정의처럼, unit을 리턴하도록 하여야 합니다.
코드: | if (write x) = (if ...) then a else b |
위 식의 값은 a의 값입니다.
b는 절대 실행되지 않습니다.
코드: | x := if bool then 3 else 2 end |
위 식에서 x의 값은 unit입니다.
인용: | SM5 에서는 if e1 then e2 else e3 이라면, t / f 시 각각 e2의 결과값 / e3의 결과값을 return할 수 있게 되어있군요. |
sm5 정의 어디에도 위와 같은 의미는 찾을 수 없습니다.
sm5 는 jtr(c1,c2)에 대해서만 정의되어 있습니다.
jtr(c1,c2)과 if문은 별개의 것입니다.
비슷하게 생긴 sm5명령어와 k-의 식들을 일대일 매치시키지 마시고, 좀 더 넓은 범위에서 생각해보시면,
unit 값을 리턴하도록 처리하는 것이 그다지 어려운 일이 아닐 것입니다. |
|
위로 |
|
|
|