that wasn’t my intention
Ironically, by saying that you’re just doing The Thing again
Short for Just Asking Questions. Where people ask loaded questions that act as a veneer to their actual statements. If you want to accuse them of the fact they are talking shit, they’ll say they’re “just skeptical” and “asking questions”
Alright as someone who likes Haskell and has dabbled in unison before, I believe I can answer all these questions for you:
- Why is
helloWorld
there twice?
It is common in languages like haskell and ocaml to first mention the type of a function, so in this case:
helloWorld
is '{IO, Exception} ()
. That is it’s type signature (important for later)helloWorld
is \_ -> println "Hello, World!"
- What’s the
'
for?- What are the
()
for?
Here is where I have to get into the nitty gritty of how unison actually works. Unison has what programming language researchers call an effect system. The type signature of helloWorld
indicates that it can perform the IO
and Exception
types of side effects, and these need to be handled. (in this case, they are handled by the compiler, but other types of side effects can be handled by the programmer themselves)
However, for reasons Unison does not like dealing with eagerly evaluated non-function values with side effects. For this reason, there is '
. Essentially, what it does is turn a value into a function that accepts ()
as it’s argument. We could therefore say that the type signature of helloWorld
is also () -> {IO, Exception} ()
. The last ()
indicates that, next to it’s IO
and Exception
side effects, it also returns ()
as a value. This is because, in functional programming languages, all functions need to return values (or run infinitely, but that is for another topic)
Now I’ve been used to functional programming for quite a while now, so things that seem natural to me can be absolutely woozy for anyone not used to this paradigm. So if anything still feels vague to you feel free to comment
I don’t know how well this fits here, but, well I don’t know where else to post nixos drama. So without further ado:
NixOS drama
Quick introduction: nix is package manager that allows you to reproducibly build any piece of software. It has been exploding in popularity over the past few years and has gotten to the point of receiving commercial endorsement. It has also received endorsement from more controversial companies, and this is where issues start to brew
A few days ago, after the success of an open letter condemning nixcons sponsorship of Anduril, a new open letter showed up. This time it discusses the creator of nix, Eelco Dolstra, and how he is becoming detrimental towards the goals of the nix community. The letter is not quite as well received as the anti-anduril letter, mostly because of its padded length and aggressive tone. I think delroth captures my personal feelings towards this letter.
Furthermore, Eelco has dropped a response, which ends in him suggesting users to move away from the community-run nix foundation and towards his consulting company, Determinate Systems. Needless to say I don’t like this call towards division at all.
Now I haven’t don’t a particularly deep analysis of this whole drama, since I’m basically merely a user and not all that active in the development of nix. Here is a link for if you want to get more details from someone who did go more in depth dissecting both articles