6 ms·
I know quite well what Guile and Scheme are; I was asking about the specific DSL/library/whatever combo that Guix is programmed in. The code snippets on the pa
by cmm 3y ago
I know quite well what Guile and Scheme are; I was asking about the specific DSL/library/whatever combo that Guix is programmed in. The code snippets on the page which this thread is about, for example, mostly use macros that seem to mimic their Nix equivalents very closely but are marginally more verbose. I would very much like to see a compelling example where the fact that Guile has macros makes a practical difference.
(Note that Nix's laziness is not an unalloyed good either, for example it is notoriously difficult to debug. But let's limit ourselves to pure expressiveness for now)
- medo-bear 3y agoWell I mean look at the docs. To each their own but I find Guile much more palatable than Nix. Moreover, I would rather spend time learning Guile than an obscure language like Nix. But for you Nix is a perfect DSL so i think we would probably be bashing our heads against the wall debating which is better. As regards macros, Guile allows you to write your own macros in a pretty straight forward way that is just not the case in Nix
- cmm 3y agoI'm not trying to "debate" anything here. I do note that those Guix people that are feeling competitive towards Nix for whatever reason tend to over-rely on two arguments that just do not work too well when examined closely. The first is "Nix is obscure the way Guile is not". I would argue both are equally obscure and neither is obscure enough for its quality or UX to suffer for it. And does expertise in Guile (base Scheme is trivial) carry over anywhere interesting? The second is "Macros!", where the implied idea is that unrestricted syntactic extensibility is Good. Well, I like Lisp (more partial to CL then Scheme, but who cares at this resolution), and I find unrestricted syntactic extensibility to be more of a hazard than a benefit; plus the expressivity of a non-strict FP language really gets you close enough for practical purposes.
- medo-bear 3y agoBesider Guix, Guile is also the default extension language for the GNU project. Moreover by learning Guile you learn a lisp which some people find quite enlightening. What do you gain from learning Nix, asside from Nix? Moreover, "macros are good" in the sense that they are powerful and grant the user freedom to construct software in ways that are just not possible with languages that try to herd their users into a specific mode of behavioir. It is the old freedom and responsibility problem. Again, I believe it is a matter of choice and personal preference
- cmm 3y agoOh boy. > Guile is also the default extension language for the GNU project. AFAIK Guix is the only project that uses Guile and has any actual users (I'm not counting Shepherd because outside GuixSD it is nothing). Guile is like 30 years old, and has been envisioned as "the default extension language for the GNU project" all that time (I was an active contributor for a while, so I should know). Guile is not even used by Emacs; Guile extensibility support in GDB is not even commonly built by distros. Guile is a nice and very competent Scheme implementation and I'd love for it to be useful outside Guix, but that's just not the case, and repeating that slogan won't change it. Seriously, just stop. > It is the old freedom and responsibility problem No, it is not. Software development is a social and technical field, not a branch of philosophy.
- lagniappe 3y agoregardless of who is right, the fervent opinions and bless-your-hearts in this thread tell me that I'm better off using neither. Purity tests are fucking dumb, escalating goalposts are fucking dumb, worrying about how others compute is fucking dumb. We're all nerds here, there's no need for this level of emotional investment into other people's opinions..
- School-Cotton 3y agoYou're absolutely right, but if that makes you not try something you might be missing out. For example, Rust is probably my favorite programming language (definitely my favorite native-code-producing one) even though I find some of the community extremely off-putting.
- School-Cotton 3y ago> does expertise in Guile (base Scheme is trivial) carry over anywhere interesting? If you ever want to embed a dynamic language in a native code program for configuring/scripting the latter, Guile is a great choice.
- cmm 3y agoIt is, but there already are other choices that are not worse and that are more established
- School-Cotton 3y agoWhat, for example? The only other one I can think of is Lua and IMO it’s quite debatable whether that is more established than Guile.
- cmm 3y agoIt is at least used outside of the GNU Project...
- tomn 3y agoplease compare: https://archlinux.org/packages/extra/x86_64/lua/#pkgreqs https://archlinux.org/packages/extra/x86_64/lua/#pkgreqs https://archlinux.org/packages/core/x86_64/guile/#pkgreqs https://archlinux.org/packages/core/x86_64/guile/#pkgreqs (lua at least is under-counted as there is luajit, lua51, and various packages which embed their own version, e.g. pandoc)