in reply to Perl disproves commutativity of Addition/Multiplication

Your code as posted

$ perl -MO=Deparse,-p junk use subs ('non_commutative'); sub non_commutative { use warnings; return(17); } use warnings; ($x = (10 * non_commutative())); ($y = non_commutative(*10)); print("$x\n$y\n\n"); ($x = (10 + non_commutative())); ($y = non_commutative(10)); print("$x\n$y\n"); junk syntax OK

If you want a function that doesn't take arguments, use a prototype of (), as in sub non_commutative() {return 17}

$ perl -MO=Deparse,-p junk sub non_commutative () { use warnings; return(17); } use warnings; ($x = (10 * non_commutative)); ($y = (non_commutative * 10)); print("$x\n$y\n\n"); ($x = (10 + non_commutative)); ($y = (non_commutative + 10)); print("$x\n$y\n"); junk syntax OK

or use constant non_commutative => 17;

$ perl -MO=Deparse,-p junk use constant ('non_commutative', 17); use warnings; ($x = 170); ($y = 170); print("$x\n$y\n\n"); ($x = 27); ($y = 27); print("$x\n$y\n"); junk syntax OK