강지훈
가입: 2008년 9월 2일 올린 글: 291 위치: 302동 312-2호
|
올려짐: 2009년4월20일 3:01 주제: 숙제 6 CPO update 버그? - 구조적인 문제 |
|
|
강지훈입니다.
코드: |
(if 1
k := &x
k := &y);
*k = 1;
x = 2
|
같은 코드가 있으면, 제가 작성한 프로그램은 최종 답으로
{k} <- loc{x,y}
{x} <- 2
{x,y} <- 1
을 내놓습니다.
하지만 분명히
{k} <- loc{x,y}
{x} <- 2
{y} <- 1
가 옳은 답일텐데요,
이 문제는 뼈대로 주신 sign.ml에서 제시한 CPO의 인터페이스가 원인이 되는 것 같습니다.
코드: |
type loc = LocCPO.t
..
let update t loc v = match t with
BOT -> MAP(FMap.add loc v FMap.empty)
| MAP m -> MAP(FMap.add loc v m)
| TOP -> TOP
|
{x,y} <- 1이 있을 때
{x}을 갱신하려고 해도 {x,y}에서 {x}가 빠지지 않습니다.
아마 1. 뼈대의 버그이거나, 2. 제가 문제 의도를 잘못 파악한 것 같습니다..
--
아 숙제가 참 피말리네요 ㅜㅜ 흑 _________________ 강지훈
프로그래밍의 원리 조교
Jeehoon Kang
TA, Principles of Programming |
|