News for hackers. Stuff that matters.
Re:Typing Nix by nosefouratyou on Friday June 23, 2017 @09:00AM (#14618818)
There's also Guix in case anyone is interested. It uses Guile/Scheme for everything instead of Haskell.
Re:Typing Nix by davexunit on Friday June 23, 2017 @09:04AM (#14618848)
I think that all the efforts to fix or re-implement the Nix language have vindicated Ludovic, the Guix maintainer, who chose an existing general-purpose language instead.
Re:Typing Nix by geokon on Friday June 23, 2017 @09:26AM (#14618977)
Except GUIX is more of a political project and part of the GNU "stack". It's a noble goal and I think it's great they're doing it. (It's people doing work on their spare time, so more power to them!)

But I wonder if that will help or hinder it in the end. It's also unclear to me what Guile brings other than fracturing the Scheme/Lisp/Racket community further (there are other Schemes that are older, seemingly just as clean, and often more powerful). Seems like mostly NIMBYism, but I might be offbase

Re:Typing Nix by mintplant on Saturday June 24, 2017 @02:12AM (#14624581)
> NIMBYism

Do you mean NIH syndrome?

Re:Typing Nix by geokon on Saturday June 24, 2017 @02:58AM (#14624678)
yeah, thanks for the correction
Re:Typing Nix by willtim on Saturday June 24, 2017 @04:24AM (#14624849)
The only significant shortcoming of the Nix language is the lack of static types. Guix doesn't fix this. In fact there isn't an existing language in common use that offers statically-typed extensible records, which IMHO vindicates the bespoke approach.
Re:Typing Nix by akavel on Friday June 23, 2017 @04:28PM (#14622491)
But Scheme is untyped too AFAIK - isn't it? So it'd require the same degree of "fixing" as long as we're talking about the discussed article.
Re:Typing Nix by civodul on Tuesday June 27, 2017 @05:58PM (#14649898)
As I explained in another comment, Scheme is indeed dynamically-typed (like Nix), but it's also strongly typed: one can define new data types, they are disjoint, and there can be no casts and the like. In Guix "packages" and "operating systems" are different types, you get a type error if you use one instead of the other; in Nix both are "attribute sets" (key/value dictionaries.)

I think the one-type-fits-all ("attribute sets") vs. strong typing (disjoing record types) axis matters more than the static vs. dynamic axis here because most of the code (OS config files, package definitions, etc.) is loaded dynamically.