पर्ल 6 (146 | 150)
ऐसा करने का सबसे आसान तरीका है कि आप उन सबरूटीनों की अदला-बदली करें जो नए लोगों के लिए ऑपरेटरों को लागू करते हैं।
sub infix:«+» ($a,$b) { "(+ $a $b)" }
sub infix:«-» ($a,$b) { "(- $a $b)" }
sub infix:«*» ($a,$b) { "(* $a $b)" }
sub infix:['/'] ($a,$b) { "(/ $a $b)" } # stupid highlighter
sub infix:«**» ($a,$b) { "(^ $a $b)" }
# currently there seems to be a bug that
# prevents this from modifying the parser correctly
# probably because there is already a different operator with this name
# which has nothing to do with exponentiation
my &infix:«^» := &[**];
say 'a' ** (2 / 3) * 9 * 3 - 4 * 6;
# (- (* (* (^ a (/ 2 3)) 9) 3) (* 4 6))
इस तरह से करने के लिए बाइट्स की पूर्ण न्यूनतम राशि है:
sub infix:<+>{"(+ $^a $^b)"} # 29
sub infix:<->{"(- $^a $^b)"} # + 29
sub infix:<*>{"(* $^a $^b)"} # + 29
sub infix:<**>{"(^ $^a $^b)"} # + 30
sub infix:</>{"(/ $^a $^b)"} # + 29
146 बाइट्स, हालांकि यह पर्ल 6 में अंगूर को गिनने के लिए अधिक समझ में आता है।
यह मानता है कि " उपसर्ग संकेतन में समान अभिव्यक्ति आउटपुट " केवल अभिव्यक्ति के परिणाम को संदर्भित कर सकता है, जरूरी नहीं कि कार्यक्रम का आउटपुट।
आपको say इसे STDOUT में प्रिंट करने के लिए प्रोग्राम प्राप्त करने के लिए अभिव्यक्ति के सामने जोड़ना होगा । (150 बाइट्स)
3+4-5+6 = (((3+4)-5)+6)या है((3+4)-(5+6))?