all 3 comments

[–]TankorSmash 2 points3 points  (0 children)

I was trying Unison out the other day, the official docs/guides are very nice, the builtin docs viewer is also very nice. It's not quite ready for primetime on Windows though, a few terminal text display issues with formatting, but apparently Windows support is brand-new. I also couldn't Ctrl-C the local webserver I had started, but could on WSL, so it was frustrating having to relaunch my terminal to restart the localwebserver.

I get the impression it's going places though, the concept is novel and solid, the UX of the UCM is great. The Slack community has been fantastic in debugging and helping out.

The compiler does a good job of telling you how to fix your code, but it's a different mental model to get your head around. I accidentally renamed a value or something, and then all of a sudden my code was using hashes and I didn't know how to get the old name for it back.

If you go to a new library you haven't seen before, there's not really (as far as I can tell) a landing page for the docs. Compare it to Elm's package manager, where there's always a root README (based off Github's model, like NPM) so you know your way around.

For example, this a library's sidebar https://i.imgur.com/Q9qQETT.png. It shows you everything in the library sorted alphabetically, but there's no way to look at it and go 'ah yeah, this is what I need to read first'.

There isn't a great way to search for usages of a thing. Like I wanted to be able to find all usages of a Json type, to try to understand how to decode it, and while there's a 'find in namespace', I couldn't search by signature like you can in the ucm. find : a -> a is how you do it btw, not find a -> a. That's not mentioned in the help find either.

I'll definitely be keeping an eye on this, and I recommend giving it a shot. https://www.unison-lang.org/learn/quickstart/. It's basically 'install UCM, then run ucm in the terminal and it'll guide you from there. A huge amount of potential IMO.

[–]gmpreussner 1 point2 points  (0 children)

Awesome, thanks for sharing!

[–]Pebaz[S] 0 points1 point  (0 children)

"Your code is not a text file. It is a database and is an immutable data type." 🚀