Per the fish shell documentation for the set
command:
append: causes the values to be appended to the current set of values for the variable. This can be used with --prepend to both append and prepend at the same time.
prepend: causes the values to be prepended to the current set of values for the variable. This can be used with --append to both append and prepend at the same time.
In quotidian English, append means to add, and prepend means to add at the beginning. Clearly, these meanings don't apply to fish (or to computers in general?), for it's redundant to say that we can both add x to y while also adding x to the beginning of y. If we can do the latter, then we can do the former. That is to say, by doing the latter, we do the former. If it's senseless to say that I am both running a race from the starting line and also running a race, then it's senseless to say that I am both prepending some data and also appending that data.
So, what do these terms mean to fish (or in the world of software development)? What are the implications for doing one over the other? And what does it mean to explicitly do both?