Proposal: Selector/Select Expression

Adam Eisenreich akxe at seznam.cz
Fri Jun 21 13:53:54 UTC 2019


This new notation will enable you a new way to create functions



`.map(...)` produces `(parameter) => parameter.map(...)`, it is not 
evaluated, it is a function definition





I cannot say I like it. To me it is less readable, confusing to be exact. 
Anything leading with `.` (dot), seems unusual











---------- Původní e-mail ----------
Od: Scott Rudiger <scottrudiger at gmail.com>
Komu: Simon Farrugia <simonfarrugia26 at gmail.com>
Datum: 21. 6. 2019 15:30:53
Předmět: Re: Proposal: Selector/Select Expression 
"

I can appreciate the intent of the proposal. 👍




Minor nit with one of the examples:






// user[] => email[] (With Arrays) 



const getEmailsList = users => users.map(user => user.contacts.email); 



const getEmailsList = .map(.contacts.email); 



```




I would think with the proposal you'd still need to reference `users`. 
Otherwise what are we mapping?




```

const getEmailsList = users.map(.contacts.email); 


```




On Fri, Jun 21, 2019, 4:49 AM Simon Farrugia <simonfarrugia26 at gmail.com
(mailto:simonfarrugia26 at gmail.com)> wrote:

"


Selector/Select Expression 



 



Doing functional & reactive programming is currently really verbose in 
JavaScript.  



Hopefully this issue will be alleviated with the addition of the pipe 
operator in the near future. 



 



One things you end up doing most when doing fp is doing simple selections 
(mappings) on objects & arrays. This unfortunately becomes really verbose 
and repetitive. 



 



What I'm proposing is to be able to collapse/simplify selector arrow 
function expressions like this: 



 



``` 



// user => email 



const getEmail = user => user.contacts.email; 



``` 



 



to something like this: 



 



``` 



// user => email 



const getEmail = .contacts.email; 



``` 



 



More examples: 



 



``` 



// user[] => email[] (With Arrays) 



const getEmailsList = users => users.map(user => user.contacts.email); 



const getEmailsList = .map(.contacts.email); 



```



 



``` 



// Usage with pipeline operator 



pipe(user, map(user => user.contacts.email)) 



user |> .contacts.email 



``` 



 



I think this would work really well, particularly in conjunction with the 
pipeline operator, resulting in more concise and expressive code improving 
readability. 



This is just syntactic sugar, but same as in the case of the pipeline 
operator, selector functions are so intrinsic and commonplace to any code 
base, that I would think it's worth considering. 



 



I would  appreciate hearing your thoughts. Thanks. 


 _______________________________________________
es-discuss mailing list
es-discuss at mozilla.org(mailto:es-discuss at mozilla.org)
https://mail.mozilla.org/listinfo/es-discuss
(https://mail.mozilla.org/listinfo/es-discuss)
"


_______________________________________________ 
es-discuss mailing list 
es-discuss at mozilla.org 
https://mail.mozilla.org/listinfo/es-discuss 
"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20190621/89f3eba7/attachment-0001.html>


More information about the es-discuss mailing list