The goal of this course is to explain syntax and semantics of the programming language Reason.
Each lesson is focusing on a specific feature or concept and can be watched independently. Still the whole course is carefully crafted and each lesson builds up on the previous ones.
In this intro I also talk about the three reasons why I care about the language.
I hope the course is helpful to you and I'm looking forward to hear what you build with Reason.
Instructor: [00:00] 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.
[00:14] 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.
[00:27] 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.
[00:39] 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.
[00:48] 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.
[01:03] Nevertheless, if declared explicitly, Reason offers escape hatches for mutability. To me, again, the best of both worlds.
[01:11] 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.
[01:28] 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.
[01:39] 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.