You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Just documenting a few cleanup ideas to give an opportunity for input before I embark on a few cleanup passes:
Convert lazy_static! to OnceCell
Improve how formal arguments are defined, planning something like to derive formal arguments for primitive functions as well as the Sym class for the builtin symbol.
As a macro_rules! macro, it could look something like
Probably requires that the r_derive proc macro crate is able to use the parsing component from the core language in order to parse this, which would mean...
Break up crate into separate crates as a workspace
Want to do a clean-up pass on macros, removing anything that isn't widely used and standardizing the few that are.
Would like to explore ways to reduce the number of flavors of call_* and eval_*, etc that fuse things like argument matching, calling, evaluation and finalizing. Preferred outcomes would be an API that composes more nicely so that these behaviors can be built instead of individually handled:
In the spirit of honing the scope of a few distinct crates, I'd like to explore decoupling the parsing from the evaluation a bit more consciously.
This is almost decoupled, but is tethered just a bit by the Expr::Primitive variant, which contains boxed references to actual functions. I'm exploring whether it's worth separating these steps so that the actual look-up of the primitive only happens upon evaluation, not during parsing.
This design would be more difficult to deal with using things like Rs do.call - specifically for [ and ( if they’re being repurposed as vector and list constructor syntax.
In do.call, should they call the constructor or the indexing function?
To avoid this, I’m considering a design that looks like Julia’s juxtapose “function”, as a mechanism of differentiating these while still using simple S-expression like representations.
Just documenting a few cleanup ideas to give an opportunity for input before I embark on a few cleanup passes:
lazy_static!
toOnceCell
Sym
class for the builtin symbol.As a
macro_rules!
macro, it could look something liker_derive
proc macro crate is able to use the parsing component from the core language in order to parse this, which would mean...call_*
andeval_*
, etc that fuse things like argument matching, calling, evaluation and finalizing. Preferred outcomes would be an API that composes more nicely so that these behaviors can be built instead of individually handled:EvalResult
s carry a reference to theCallStack
Context
implementations, as there is a lot of code lingering in theEnvironment
implementation that is never calledThe text was updated successfully, but these errors were encountered: