let new_peg_and_assign (var_to_bind : char) (d : entity) =
fun ((r, h) : assignment * store) ->
(* first we calculate an unused index *)
- let newindex = List.length h
- (* next we store d at h[newindex], which is at the very end of h *)
+ let new_index = List.length h
+ (* next we store d at h[new_index], which is at the very end of h *)
(* the following line achieves that in a simple but inefficient way *)
in let h' = List.append h [d]
- (* next we assign 'x' to location newindex *)
- in let r' = fun v ->
- if v = var_to_bind then newindex else r v
+ (* next we assign 'x' to location new_index *)
+ in let r' = fun var ->
+ if var = var_to_bind then new_index else r var
(* the reason for returning true as an initial element will emerge later *)
- in (true, r',h')
+ in (true, r', h')
-* Is that enough? If not, here are some [more hints](/hints/assignment_7_hint_4).
+* Is that enough? If not, here are some [more hints](/hints/assignment_7_hint_4). But try to get as far as you can on your own.