Idea from Timur Xazamov https://x.com/nanot1m/status/1720494020651020562
While waiting for the JS pipe operator |>, maybe we can use ($=…, $=…, $) instead.
Either locally declare let $; or treat $ as a shared global volatile var:
const foo = (
$= 2,
$= bar($),
$= $.hello.world(),
$= await fetch($),
await $.json()
)Translating the official examples to this pattern:
| Pipeline | Equivalent |
|---|---|
Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ')
|> `$ ${%}`
|> chalk.dim(%, 'node', args.join(' '))
|> console.log(%); |
$= Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ')
$= `$ ${$}`
$= chalk.dim($, 'node', args.join(' '))
console.log($) |
const envVarFormat = vars =>
Object.keys(vars)
.map(var => `${var}=${vars[var]}`)
.join(' ')
|> chalk.dim(%, 'node', args.join(' ')); |
const envVarFormat = vars => (
$= Object.keys(vars)
.map(var => `${var}=${vars[var]}`)
.join(' '),
chalk.dim($, 'node', args.join(' '))
) |
return (
<ul>
{
values
|> Object.keys(%)
|> [...Array.from(new Set(%))]
|> %.map(envar => (
<li onClick={
() => doStuff(values)
}>{envar}</li>
))
}
</ul>
); |
return (
<ul>
{(
$= values,
$= Object.keys($),
$= [...Array.from(new Set($))],
$.map(envar => (
<li onClick={
() => doStuff(values)
}>{envar}</li>
))
)}
</ul>
); |
const x = foo()
|> bar(%)
|> () => log(%) // closure
|> baz(%)
|> done(%) |
const x = (
$= foo(),
$= bar($),
$= ($$=>
() => log($$)
)($),
$= baz($),
done($)
) |