Instructor: The goal of this course is to provide a good overview about the syntax, and even more importantly, the semantics of the programming language Reason. Each lesson is focusing on a specific feature, concept, or best practice, and can be watched independently.
Still, the whole course is carefully crafted to get someone from zero knowledge about Reason to a state where they're ready to use it. In case you're even undecided if you should explore Reason, let me share my top three reasons why I care about it.
The language is statically typed, which provides more safety and clarity, while evolving a code base. Instead of writing all the types all the time, a large portion of it can be inferred by the compiler.
To me, this is the best of both worlds. For once, you can move fast, but you don't lose any of the benefits and guarantees that come with static types.
My second reason is that let bindings, as well as most of the built-in data structures, are mutable by default. In the last couple years, I started to appreciate immutable data structures more and more, as they helped the teams I was working with to avoid bugs.
Nevertheless, if declared explicitly, Reason offers escape hatches for mutability. To me, again, the best of both worlds.
My third, and to me, probably the most exciting reason is the usefulness of variants in combination with pattern matching. Variants allow us to express multiple options that are exclusive as a data structure.
Pattern matching allows us to do exhaustive checking on these results. With both of them in combination, we can make states that should never happen impossible to exist.
Of course, neither of these magically eliminate bugs. Properly used, though, they can be of great assistance when programming. I hope this course is helpful to you, and I'm looking forward to hear what you build with Reason.