One small thing about async behavior in Rust; Depending on the implementation of get_movies, it might also only start the request once the Future is polled (Rust supports push as well as pull behavior for Futures). What that doesn't change, though, is that there are still side effects instead of type encoded effects.
I am humbled and elated to see such great language design!!! Looking forward to see isomorphic Roc code, so we may use it for both web server and the browser. What about type classes and generics?
i remember using livescript all the way back before node even had async await, and you had to callback hell everything. livescript backcalls thing was so good
I don't like type-inference. "Explicit is better than implicit". Reading other people's code in languages with type-inference can sometimes be very confusing. I see type annotations as more documentation for the reader/maintainer. If a feature makes it easier to read other people's code and harder to write your own code, then reading trumps writing and it's a good feature. and If the converse is true, it's a bad feature. "Typing [as in pressing keys on the keyboard, not type-systems] is not the bottleneck".
I believe the statement at 26:30 is incorrect about Rust. Calling `let fut = get_movies();` does not immediately fire an HTTP request. One must do `fut.await` afterwards (or just do `get_movies().await`.
One small thing about async behavior in Rust; Depending on the implementation of get_movies, it might also only start the request once the Future is polled (Rust supports push as well as pull behavior for Futures). What that doesn't change, though, is that there are still side effects instead of type encoded effects.
“The compiler can always infer the type.”
Whoa. That’s pretty cool.
Great talk, I'm looking forward to using this language more and more!
I’m hyped for roc
I am humbled and elated to see such great language design!!!
Looking forward to see isomorphic Roc code, so we may use it for both web server and the browser.
What about type classes and generics?
i remember using livescript all the way back before node even had async await, and you had to callback hell everything.
livescript backcalls thing was so good
Great talk and very interesting discussions.
For those interested, I recommend Koka. Really incredible language.
I already know I'll use the catchall errors return "ahhhhhhhhhhhhhhhh"
Would we still need Elm if we have Roc with a corresponding Web UI library?
I had the same question about running with type errors, I'd swear that I saw the check pass without warning the user about errors, but I guess not
Even in tech talks 42 years later Rodney Dangerfield don’t get no respect.
Makes you think how necessary is to use zod, io-ts, or other parsing libraries in the js ecosystem
So as i understand roc somehow stores type information ay least in test env to run program without undefined behaviour?
he says at 54:09 that a line with a type error is replaced with just an abort, which shouldn't require them to keep type information around at runtime
Does NoRedInk intend to use it in any capacity
Very interesting!
Love it, but those numbers need to be fixed, ints and reals should be distinct. Go full numeric tower.
I don't like type-inference. "Explicit is better than implicit". Reading other people's code in languages with type-inference can sometimes be very confusing. I see type annotations as more documentation for the reader/maintainer. If a feature makes it easier to read other people's code and harder to write your own code, then reading trumps writing and it's a good feature. and If the converse is true, it's a bad feature. "Typing [as in pressing keys on the keyboard, not type-systems] is not the bottleneck".
In PHP i can have types, IDE will complain, but I can still run the program )
Sure, you can also have IDE perfectly happy and still get runtime type errors. That's what I want to avoid.
I believe the statement at 26:30 is incorrect about Rust. Calling `let fut = get_movies();` does not immediately fire an HTTP request. One must do `fut.await` afterwards (or just do `get_movies().await`.
no mutable variables == no mass adoption