Ceu is a synchronous programming language that reconciles Structured Concurrency with Event-Driven Programming, extending classical structured programming with three main functionalities:
I see that you are using Kotlin? Is it the new host language?
How are you enjoying it as a language?
The manual:A section about the design:
"Ceu respects the lexical structure of the program also when dealing with dynamic memory allocation. Every dynamic value is attached to the block in which it was first assigned and cannot escape it in further assignments or as return expressions. This is valid not only for collections (tuples, vectors, and dictionaries), but also for closures, coroutines, and tasks. This restriction ensures that terminating blocks (and consequently tasks) deallocate all memory at once. More importantly, it provides static means to reason about the program. To overcome this restriction, Ceu also provides an explicit move operation to reattach a dynamic value to an outer scope."Would it be fair to say that this was inspired by Rust, but instead of a borrow checker you use a much simpler "has to be moved to a higher scope explicitly" approach?
I like how straightforward the design is, and it seems quite easy to reason about. Is it also easier to implement?
A peek operation vec[=] sets or gets the last element of a vector. The push operation vec[+] adds a new element to the end of a vector. The pop operation vec[-] gets and removes the last element of a vector.I really love this syntax, by the way. Especially vec[=] since represents such a common operation that's often a bit painful to write in other languages. If we had a deque collection I could imagine extending it to unshift and shift operators as deque[+..] and deque[-..]