CSE526: Principles of Programming Languages Scott Stoller solution to hw2: denotational semantics in ocaml, part 2 version: 9pm,23feb2004 due: 19 feb 2004 PROBLEM 1 type entry = { var : string ; value: int } type t = entry list let state_zero = [] let rec get_value sigma v = match sigma with [] -> 0 | y::l -> if y.var = v then y.value else get_value l v let rec update sigma v i = match sigma with [] -> [{ var = v ; value = i }] | y::l -> if y.var = v then { var = v ; value = i }::l else y::update l v i PROBLEM 2 type entry = { var : string ; mutable value: int } type t = entry list let state_zero = [] let rec get_value sigma v = match sigma with [] -> 0 | y::l -> if y.var = v then y.value else get_value l v let rec update sigma v i = match sigma with [] -> [{ var = v ; value = i }] | y::l -> if y.var = v then ( y.value <- i ; y::l ) else y::update l v i