Re:The Rust I wanted had no future
by mike_hearn on Monday June 05, 2023 @06:33AM
(#36194549)
Yes, but are there any effects systems in use outside of maybe Haskell? Effects seem mostly to be stuck in the research lab and have been for a long time.
Re:The Rust I wanted had no future
by hayley-patton on Monday June 05, 2023 @06:37AM
(#36194566)
I don't mean "effects" in the sense where you can have effect handlers which get delimited continuations and all; it'd just mark what could happen (like checked exceptions). But I can't think of any languages with that and not effect handlers; Koka, Eff, and Unison come to mind for effects, though their practical-ness may vary.
Do you really need effect handlers as a separate feature once you have async/await? It seems like you could easily encode one with the other.
Re:The Rust I wanted had no future
by hayley-patton on Monday June 05, 2023 @09:48AM
(#36196159)
An effect handler is allowed to invoke a continuation multiple times; I believe this is not possible with async/await.
Re:The Rust I wanted had no future
by ohgodplsno on Monday June 05, 2023 @07:13AM
(#36194792)
Verse has effects, which by virtue of exposing it to the entire Fortnite community probably makes it a bigger language than Haskell in terms of user counts.
https://dev.epicgames.com/documentation/en-us/uefn/specifier...
converges/diverges, computes, varies, reads, writes, transacts, no_rollback.
Alternately, an effect system can communicate "touches disk", can make functions which are polymorphic to effects (e.g. map touches the disk if the mapping function touches the disk), and can distinguish different effects, unlike async/sync being anything-or-nothing. IMO async is more of an implementation detail (as "may suspend/yield" is not a very precise or interesting effect), whereas effects would communicate the properties that ohgodplsno wants to know.