moniker
moniker copied to clipboard
Automagical variable binding library for Rust
I think there may be a bug in the handling of nested recursive bindings with embeds... i.e. nested letrecs as in the test I've added here: https://github.com/curvelogic/moniker/commit/39d7c569a614ef9dca0707cc0360e618e6a1fddd (I may be...
This would be useful for languages where the are multiple namespaces. Examples would be Rust, Haskell, or Elm, where values and types can share names, but point to different things....
It would be nice to show an example of using Moniker to define Haskell/Idris/Purescript/Agda-style definitions. - https://www.haskell.org/onlinereport/haskell2010/haskellch4.html - https://github.com/sweirich/pi-forall/
We'd like a `Subst` trait, like in Unbound. It might look something like this: ```rust trait Subst { fn subst(&mut self, name: &Name, replacement: &T); fn substs(&mut self, replacements: &[(Name,...
Initially we have support for locally nameless variable binding, but perhaps it would be handy to also support others, so users could compare them for performance. The original Unbound implementation...
[cargo-readme](https://github.com/livioribeiro/cargo-readme) seems like a handy tool! Not sure how best to do this, considering this is a multi-crate repo 🤔
Lean (apparently) stores the maximum bound variable to improve the performance of its locally nameless representation. Here is a quote from section 3.3 in [_Elaboration in Dependent Type Theory_](http://arxiv.org/abs/1505.04324) (note...
This should make free-variable calculation and substitutions much quicker. This is what [SimpleFP-v2](https://github.com/psygnisfive/SimpleFP-v2) uses [in its ABT](https://github.com/psygnisfive/SimpleFP-v2/blob/ae00ec809caefcd13664395b0ae2fc66145f6a74/src/Utils/ABT.hs#L125-L130).
I want to eventually use the modified bidirectional approach used in the paper '[Let Arguments Go First](https://i.cs.hku.hk/%7Ebruno/papers/arguments-esop18.pdf)' in Pikelet (see pikelet-lang/pikelet#76). As a stepping stone, it might help to make...