2 ms·
There are many things like it. For example, managed operating environments where the user doesn't need to do anything (and actually can't do anything). Or dispo
by oneplane 4y ago
There are many things like it. For example, managed operating environments where the user doesn't need to do anything (and actually can't do anything). Or disposable environments like VMs and containers.
Sure, it's not the same as massaging a special pet operating system over and over, but most people that need to produce software hopped off of that bandwagon years ago.
I get that companies that do functional programming and linux and linux on the desktop exist, but I have yet to find any company that does that at scale, at a good profit, versus competition. That's not to say that "therefore, Nix is bad", it's just that the problem isn't a technical one that nix suddenly fixes. It seems to be only a problem if you're stuck in yum/apt all day and need to get a fix to get out of that.
- otabdeveloper4 4y agoNix is not an operating system. It can be used to build operating systems easily, though. Also, there isn't anything "functional" about Nix. It's a nice sales pitch, but underneath it's just a thin layer over bash scripts and environment variables.
- octoberfranklin 4y agoNix is a metaprogramming language for bash. The metalanguage is indeed purely functional. The object language (bash) isn't.
- otabdeveloper4 4y agoRight. You still end up mostly writing bash scripts when wrangling Nix. It's not some sort of ivory tower Haskelish hermetic ecosystem, it's just a very nice way to make bash scripting sane.
- yencabulator 4y agoI don't think I'd call adding yet another layer of escaping syntax "sane".
- octoberfranklin 4y agoNix uses string antiquotation, not string escaping. It's one of very few languages which has it. And yes, it is sane, very sane. The only sane solution to this problem. Edolstra's thesis advisor was the first to create a scannerless GLR parser: https://en.m.wikipedia.org/wiki/Scannerless_parsing https://en.m.wikipedia.org/wiki/Scannerless_parsing The first versions of Nix used a scannerless GLR parser, because it's the only way to prototype sophisticated features like antiquotation without going completely mad. Once the syntax was completely locked down it was rewritten with a separate scanner and LR(something) parser, but they're intricately entwined. The scannerful, non-GLR parser is faster but basically frozen and extremely difficult to modify. Fortunately Nix's syntax has been exceptionally stable for the last decade or more. True string antiquotation is a feature that every language should have, but unfortunately with current technology it forces you to choose between a slow parser or a fast parser that's almost impossible to modify. Some languages have "string interpolation" which is a weaker, more fragile form of antiquotation.
- yencabulator 4y agoAnd that, ladies and gentlemen, summarizes the attitude you'll get from Nix people. By antiquotation you mean evaluating things inside ${}, which is a standard thing in many, many places, including shell and Javascript. Meanwhile, https://nixos.org/manual/nix/stable/expressions/language-values.html https://nixos.org/manual/nix/stable/expressions/language-val... has gems such as this: > Since ${ and '' have special meaning in indented strings, you need a way to quote them. $ can be escaped by prefixing it with '' (that is, two single quotes), i.e., ''$. '' can be escaped by prefixing it with ', i.e., '''. $ removes any special meaning from the following $. Linefeed, carriage-return and tab characters can be written as ''\n, ''\r, ''\t, and ''\ escapes any other character.
- octoberfranklin 4y ago> By antiquotation you mean evaluating things inside ${}, which is a standard thing in many, many places, including shell and Javascript. No, I absolutely do not.