Call by value but the value is two pointers

With push! from miscmacros you can cons onto that particular name whereas with mutate-cons! defined like this:

You can change all instances of that particular list. Super dangerous.♥︎

Here, I’ll show you:

Returns this:

That’s not a slag on push! which is more often what you want. It’s a macro modifying what one particular name points to. Whereas mutate-cons! is a procedure that changes the actual underlying object.

Also mutate-cons! doesn’t work on the empty list. You can only push onto lists with at least one element. They need to be actual cons pairs.

miscmacros - The CHICKEN Scheme wiki