Roger-luo / Expronicon.jl

Collective tools for metaprogramming on Julia Expr
https://expronicon.rogerluo.dev/
MIT License
86 stars 6 forks source link

request more examples of use #8

Open JeffreySarnoff opened 3 years ago

JeffreySarnoff commented 3 years ago

As you have time, or some inspiration, additional examples and different kinds of use would go a long way to getting people more comfortable with this.

Roger-luo commented 3 years ago

not sure what kind of example you mean here? there are almost one example for each exported function and type already written in the doc. I'm not sure what example is missing, but if you find any would be nice to file an issue for that.

JeffreySarnoff commented 3 years ago

Yes, your coverage of the exported functions is good. It seems to me that the real value of your package is to be realized when others combine and coordinate these exports to achieve something masterful and otherwise difficult to produce. My suggestion is that collecting some smaller examples that highlight both "ways of use" and "reasons for use" would be most helpful.

Roger-luo commented 3 years ago

It seems to me that the real value of your package is to be realized when others combine and coordinate these exports to achieve something masterful and otherwise difficult to produce.

It's a replacement of ExprTools/MacroTools/etc. using the modern pattern matching engine MLStyle. I believe this package already have much better documentation comparing to those

My suggestion is that collecting some smaller examples that highlight both "ways of use" and "reasons for use" would be most helpful.

I don't have any good small examples at the moment, especially the usage of metaprogramming can be very general, perhaps someone could contribute a few in the future. But I have added a use case page in the doc, now there is only one package Configuration depends on this package, but I'm planning to switch to this package for a few more packages of mine. These can serve as best practices.

However, I don't think one can/should do meta-programming without learning what's happening below the high-level interface - which means you still need to understand the Julia docs and basic knowledge of compilers first. This is because, unlike a machine learning model that you can just work on high-level wrappers, metaprogramming can be subtle, and to be responsible to your users, the developers should be aware of what's happening exactly.

JeffreySarnoff commented 3 years ago

Thank you.

On Wed, Apr 7, 2021 at 5:09 PM Rogerluo @.***> wrote:

It seems to me that the real value of your package is to be realized when others combine and coordinate these exports to achieve something masterful and otherwise difficult to produce.

It's a replacement of ExprTools/MacroTools/etc. using the modern pattern matching engine MLStyle. I believe this package already have much better documentation comparing to those

My suggestion is that collecting some smaller examples that highlight both "ways of use" and "reasons for use" would be most helpful.

I don't have any good small examples, especially the usage of metaprogramming can be very general, perhaps someone could contribute a few in the future. But I have added a use case page in the doc, now there is only one package Configuration depends on this package, but I'm planning to switch to this package for a few more packages of mine. These can serve as best practices.

However, I don't think one can/should do meta-programming without learning what's happening below the high-level interface - which means you still need to understand the Julia docs and basic knowledge of compilers first. This is because, unlike a machine learning model that you can just work on high-level wrappers, metaprogramming can be subtle, and to be responsible to your users, the developers should be aware of what's happening exactly.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Roger-luo/Expronicon.jl/issues/8#issuecomment-815266526, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAM2VRRQHBSLMTRIKLTPJ4TTHTC2JANCNFSM42OCRLFQ .