JavaScript (Babel), cracks my pronoun is monicareinstate's answer
The answer is 74291 bytes using only the characters [+|>]
, which is unfortunately too large to post here, so I've provided a GitHub repository to verify the solution.
git clone https://github.com/patrickroberts/xchars-pipeline.git
cd xchars-pipeline
npm install
npmnpx startbabel-node index.js
Output:
!"#$%&'()*,-./0123456789:;=ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz
This output limits us to the printable ASCII characters +<>?@[]{|}~
(as Calculuswhiz points out), which means the only way to invoke a function is with the pipeline operator |>
.
Essentially the pipeline operator allows f(x)
to be expressed as x|>f
. Other than that, the restricted source using these characters is very similar to JSF*ck. I compiled the following program using Xchars.js
console.log('!"#$%&\'()*,-./0123456789:;=ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz')
and was able to interpret it using a Babel plugin. There are two competing proposals for the pipeline operator supported by this plugin, but I opted to use the F#-style pipeline since the output of the Xchars.js compiler is not compatible with the Smart pipeline and Babel will throw the following error during compilation:
SyntaxError: Pipeline is in topic style but does not use topic reference (1:670)