3 ms·
There's a lot of good stuff here, effects, transactional memory, a concurrency story without colored functions (don't be fooled by the documentation mentioning
by 4ad 4y ago
There's a lot of good stuff here, effects, transactional memory, a concurrency story without colored functions (don't be fooled by the documentation mentioning async over and over, it's different stuff), a completely novel way of dealing with failure, planet-scale repl (not yet available), etc.
But I feel like they had a list of features and a specific syntax that they wanted to give to game developers, and they then had to shoehorn "the good bits" (the semantics) into these arbitrary features. Some things are truly bafling, like it has both significant indentation and {}, at programmer's choice. Wat.
Also I think the documentation is not great. It says reference in the title, but as a reference is not very thorough, in fact it's more like a tutorial, but the sequencing is not very pedagogical to be a tutorial either. In general the concepts are explained at a very basic level, but then sometimes it throws very technical concepts at you out of the blue, like type polarity. Also a lot of the links are 404 and they hijacked middle click. Ugh. They also publish memes in the documentation. In fact all images published as part of the documentation are kinda pointless.
I suppose I'm not the target user here, but I really wish there was a way to play with the language outside the Unreal editor. Surely this has to be possible, if anything, just for their own developing team's sanity. (Edit: after watching the video linked in the thread, apparently this is coming, they are going to release it as open source!)
In any case, I am really excited about this new language, quirks at all, and I am really waiting for the next papers the team will publish. The first paper was really great!
- 4ad 4y agoMore thoughts. In fact I think that `class` and other constructs are some sort of compile-time macro. I suspect some syntactic idiosyncrasies are about making the language homoiconic. Verse has effects, but not algebraic effects. The set of effects is finite and fixed, and there's no way to define arbitrary handlers. All effect processing happens in language constructs like if and for (which might be macros, so maybe there will still be some user-level support for handlers after all). Because it does not have a full blown effect system, concurrency and monadic composition had to be baked into the language, with an effect system these features could have been implemented in a library instead. Notice how effects are negative types. They are a promise about what a function will not do, not an indication about what a function might do. This is the opposite of other languages with effects. defer is not needed if you have linear types. I suspect they considered linear types too difficult for the average programmer, so they went with what they consider a good-enough solution. The type system is probably very novel, I suspect it is the most interesting part of Verse but so far has not been explained or talked about at all. I suspect it might have some form of dependent types.