This code is needed in the discussion of assignment in Assignment.
where it serves as a solution to equation E0. The idea is that
the function takes an argument of the form
((locations,values),store) and returns the
store with the values stored at the locations indicated.
locations = compose(left,compose(left,argument))
values = compose(right,compose(left,argument))
store = compose(right,argument)
replace =
refer conditional(
store,
(
conditional(
compose(left,locations),
(
conditional(
compose(right,locations),
(
(hired meta)(
self,
couple(
(hired fan right)(locations,values),
(hired meta)(
self,
couple(
(hired fan left)(locations,values),
store)))),
couple(
(hired meta)(
self,
couple(
couple(compose(left,locations),values),
compose(left,store))),
compose(right,store)))),
conditional(
compose(right,locations),
(
couple(
compose(left,store),
(hired meta)(
self,
couple(
couple(compose(right,locations),values),
compose(right,store)))),
values)))),
(hired meta)(
self,
couple(couple(locations,values),constant (nil,nil)))))