You may use either the <<link>> or <<button>> macros to provide a way for players to perform an action which does not need to navigate passages (though, both macros can do that as well). For example:
Carrot $20 <<link "Buy">><<set $money -= 20>><<addToInv "carrot">><</link>>
Lettuce $10 <<link "Buy">><<set $money -= 10>><<addToInv "lettuce">><</link>>
Alternatively. If you decided that you needed to navigate back to the same passage for some reason, then I'd suggest the following minor alteration of the above example instead:
Carrot $20 <<link "Buy" `passage()`>><<set $money -= 20>><<addToInv "carrot">><</link>>
Lettuce $10 <<link "Buy" `passage()`>><<set $money -= 10>><<addToInv "lettuce">><</link>>
NOTE: The only change is the addition of the optional passageName argument to the macro. In this case, a backquote expression containing a call to the passage() function, which will return the name of the current passage.