2 Save 8 bytes based on suggestion by H.PWiz.

EDIT:

• -2 bytes by H.PWiz by using <>, then -6 by moving the (10*)<$>. This now uses the newly free <> operator (Semigroup multiplication, requires GHC 8.4 to work without an import.) main=putStr$s++show(10*r,s);main=putStr$fst<>show$(r,s10*)=<$>(1,"main=putStr$s++show"main=putStr$fst<>show$(10*r,s10*);(r<$>",s)="1)  Try it online! Almost a standard Haskell quine, except the quine data is a tuple, which pairs the usual stringTry it online! (Cheats with an integer literal, which is multiplied by 10 before printing, adding an extra digit zeroimport since TIO doesn't have GHC 8.4 yet.) # How it works • main=putStr$ is boilerplate to output the following string value.
• fst<>show is a function that takes a tuple, and returns a string consisting of the first element of the tuple concatenated with the tuple's string representation. I.e.

(fst<>show)(s,t) = fst(s,t)<>show(s,t) = s++show(s,t)

• (10*)<$> multiplies the last element of the following tuple by 10, adding a digit 0 to its string representation. # Haskell, 74 bytes main=putStr$s++show(10*r,s);(r,s)=(1,"main=putStr$s++show(10*r,s);(r,s)=")  Try it online! Almost a standard Haskell quine, except the quine data is a tuple, which pairs the usual string with an integer literal, which is multiplied by 10 before printing, adding an extra digit zero. # Haskell, 74 66 bytes EDIT: • -2 bytes by H.PWiz by using <>, then -6 by moving the (10*)<$>.

This now uses the newly free <> operator (Semigroup multiplication, requires GHC 8.4 to work without an import.)

main=putStr$fst<>show$(10*)<$>("main=putStr$fst<>show$(10*)<$>",1)


Try it online! (Cheats with an import since TIO doesn't have GHC 8.4 yet.)

# How it works

• main=putStr$ is boilerplate to output the following string value. • fst<>show is a function that takes a tuple, and returns a string consisting of the first element of the tuple concatenated with the tuple's string representation. I.e. (fst<>show)(s,t) = fst(s,t)<>show(s,t) = s++show(s,t)  • (10*)<$> multiplies the last element of the following tuple by 10, adding a digit 0 to its string representation.

1

main=putStr$s++show(10*r,s);(r,s)=(1,"main=putStr$s++show(10*r,s);(r,s)=")