I find this interesting, indeed. Although, I believe the ( ) are like "representations OF a function call". I felt like if there was something missing there! What about something like this, then?
// exclaim(capitalize(doubleSay("hello"))); doubleSay("hello") |> capitalize |> exclaim; For me, this feels like "calling doubleSay", then passing its results for capitalize, and its result to exclaim. Some interesting implementations coupd be done with async await, I believe! On Tue, Nov 10, 2015 at 3:09 PM, Alexander Fritze <a...@onilabs.com> wrote: > I agree 100% that this would make a great addition to JS! > > We've had the pipeline operator in Stratified JS for a while - see > https://conductance.io/reference#sjs:%23language/syntax::double-dot - > , and in our experience it makes a lot of code much more readable. > > We call it '..' (the 'doubledot operator') instead of '|>' - IMO this > feels more aligned with existing JS syntax and less jarring than '|>'. > > > On Tue, Nov 10, 2015 at 10:54 AM, Gilbert B Garza > <gilbertbga...@gmail.com> wrote: > > Hello, I'm a JavaScript programmer and instructor who loves functional > > programming and writing concise, readable code. I think in general > > JavaScript supports programming in a functional style quite well. > However, > > there is one small missing piece that I miss from other FP languages: the > > simple-yet-useful pipeline operator. > > > > Similar to F#, Elixir, Elm, and other FP languages, the pipeline > operator |> > > helps make multiple function invocations more readable. Basically, > > `sqrt(64)` is equivalent to `64 |> sqrt`. For example, given the > following > > functions: > > > > ```js > > function doubleSay (str) { return str + ", " + str; } > > function capitalize (str) { return str[0].toUpperCase() + > str.substring(1); > > } > > function exclaim (str) { return str + '!'; } > > ``` > > > > you could use the pipeline operator to expand your invocations for > > readability: > > > > ```js > > // old way: > > // var result = exclaim(capitalize(doubleSay("hello"))); > > > > // new way: > > var result = "hello" > > |> doubleSay > > |> capitalize > > |> exclaim; > > > > // or, if you like one-liners: > > var result = "hello" |> doubleSay |> capitalize |> exclaim > > > > result //=> "Hello, hello!" > > ``` > > > > You can see a few more examples, including an advanced example with > > Promises, here: https://github.com/mindeavor/ES7-pipeline-operator > > > > I'm inclined to think this feature is small and straight-forward to > > implement. Other than the operator, there are no new semantics. The > syntax > > transformation is simple, and all existing code would remain unaffected. > > > > Although small, this feature increases the expressiveness of JavaScript > > significantly by opening more API design possibilities. You can see this > in > > the link I included above. > > > > Thanks for reading. Any thoughts or comments? > > > > _______________________________________________ > > es-discuss mailing list > > es-discuss@mozilla.org > > https://mail.mozilla.org/listinfo/es-discuss > > > > > > -- > Alexander Fritze > http://onilabs.com > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss > -- *Felipe N. Moura* Senior Web Developer and System Analyst. Website: http://felipenmoura.com Twitter: @felipenmoura <http://twitter.com/felipenmoura> LinkedIn: http://goo.gl/qGmq Meet some of my projects: BrazilJS Conference <http://braziljs.com.br/> | BrazilJS Foundation <http://braziljs.org> --------------------------------- *Changing the world* is the least I expect from myself!
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss