4 ms·
One reason is that Scheme has Emacs modes that connect to a live system for precise jump-to-definition, etc. This works with Guix and is extremely convenient. S
by mbrock 5y ago
One reason is that Scheme has Emacs modes that connect to a live system for precise jump-to-definition, etc. This works with Guix and is extremely convenient. Scheme's metaprogramming also enables Guix's beautiful system of code staging, G-expressions.
https://guix.gnu.org/manual/en/html_node/G_002dExpressions.html https://guix.gnu.org/manual/en/html_node/G_002dExpressions.h...
- Ericson2314 5y ago> One reason is that Scheme has Emacs modes that connect to a live system for precise jump-to-definition, etc. This works with Guix and is extremely convenient. Those are all valuable things, but I don't think that would actually be hard to implement for the Nix language either. Just no one bothered > Scheme's metaprogramming also enables Guix's beautiful system of code staging, G-expressions. Yes not pasting together strings for bash would be nice, but with all due respect to scheme's metaprogramming, which I do indeed highly respect, I view this as fairly orthogonal. From a quick glance, g-exps don't have much binding structure? That means hygiene and other things are not as useful, and just doing ["see" "I" "can" "sexp" "too"] in the Nix expression language isn't actually so bad.
- rekado 5y agoWith G-expressions you can splice in computed store values, e.g. the computed output location of a package. I recommend the paper[1] explaining why they exist and what alternatives they replace. [1]: https://hal.inria.fr/hal-01580582 https://hal.inria.fr/hal-01580582