[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

B.3 Replace

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)))))

This document was generated on November 8, 2012 using texi2html 1.82.