emacs-elsa / Elsa

Emacs Lisp Static Analyzer and gradual type system.
GNU General Public License v3.0
640 stars 26 forks source link

extension for emacs-deferred #170

Open gonewest818 opened 4 years ago

gonewest818 commented 4 years ago

Thank you all for your impressive and valuable work here!

The library emacs-deferred introduces macros to express deferred chains of asynchronous tasks. The deferred:$ macro uses the anaphoric it, which it appears requires further explanation for the static analyzer.

Additionally, the author of the library designed it such that, in common usage, people will be writing lambda forms that trigger the notice "You can eta convert the lambda form and use the function directly". https://github.com/kiwanami/emacs-deferred#basic-usage

Fuco1 commented 4 years ago

None of the examples should trigger that notice. It should only be triggered when the function can be reduced:

(lambda (x) (stringp x)) 

is the same as

#'stringp

but

(lambda (x) (message "foo bar %s" x))

can not be reduced in such a way (x is not a direct argument).

Do you have a repro case?

gonewest818 commented 4 years ago

Right, sorry, that wasn’t literally the repro case. See instead https://github.com/gonewest818/geolocation.el/blob/master/geolocation.el https://github.com/gonewest818/geolocation.el/blob/master/geolocation.el near line 480 and again at 583.

On Mar 9, 2020, at 2:38 PM, Matus Goljer notifications@github.com wrote:

None of the examples should trigger that notice. It should only be triggered when the function can be reduced:

(lambda (x) (stringp x)) is the same as

'stringp

but

(lambda (x) (message "foo bar %s" x)) can not be reduced in such a way (x is not a direct argument).

Do you have a repro case?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/emacs-elsa/Elsa/issues/170?email_source=notifications&email_token=AASYZ5UMJ6D3AJRU7ZQE7XDRGVOVXA5CNFSM4LD3N2G2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEOJFJFQ#issuecomment-596792470, or unsubscribe https://github.com/notifications/unsubscribe-auth/AASYZ5RWFWH5VI4KQS2K5LLRGVOVXANCNFSM4LD3N2GQ.