Also many of the operators have a “handedness” to them that makes sense when thinking about reverse computation flow, but sometimes doesn’t make sense when making a circuit. For example, if you want to make thing a equal to the sum of things b and c , you don’t want to have to specify which of b and c is the thing that’s being added versus the thing that’s being added to, they feel equally important and you would expect that if you change a , the change would propagate into both b and c in some way (split equally or perhaps proportionally), not that all of the change would be pushed into arbitrarily one of those letters, or that you would have to explicitly decide which one at the time you are constructing the program.