Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

ReasonML for JavaScript Developers

ReasonML for JavaScript Developers

This slide set shows how to leverage various Reason features like tuples, variants, and pattern matching to write expressive, concise, and type-safe code.

Avatar for Marius Schulz

Marius Schulz

February 01, 2018
Tweet

Other Decks in Programming

Transcript

  1. let todos = [ "Buy milk", "Mow the lawn", "Pay

    the bills" ]; let todos' = [ "Learn ReasonML", ...todos ];
  2. let greet = name => { let greeting = "Hello

    " ++ name ++ "!"; Js.log(greeting); };
  3. const number = 42; const sign = number < 0

    ? "negative" : "non-negative";
  4. let number = 42; let sign = number < 0

    ? "negative" : "non-negative";
  5. let number = 42; let sign = if (number <

    0) { "negative" } else { "non-negative" };
  6. let number = 42; let sign = if (number <

    0) { "negative"; } else { "non-negative"; };
  7. let number = 42; let sign = switch number {

    | x when x < 0 => "negative" | x => "non-negative" };
  8. let number = 42; let sign = switch number {

    | x when x < 0 => "negative" | _ => "non-negative" };
  9. let number = 42; let sign = switch number {

    | x when x < 0 => "negative" | x when x > 0 => "positive" | _ => "zero" };
  10. let number = 42; let sign = switch number {

    | x when x < 0 => "negative" | 0 => "zero" | _ => "positive" };
  11. const number = 42; const sign = number < 0

    ? "negative" : number === 0 ? "zero" : "positive";
  12. type dayOfWeek = | Monday | Tuesday | Wednesday |

    Thursday | Friday | Saturday | Sunday;
  13. type dayOfWeek = | Monday | Tuesday | Wednesday |

    Thursday | Friday | Saturday | Sunday; let today = Thursday;
  14. let abbreviateDay = day => switch day { | Monday

    => "Mo" | Tuesday => "Tu" | Wednesday => "We" | Thursday => "Th" | Friday => "Fr" | Saturday => "Sa" | Sunday => "Su" };
  15. let isWeekendDay = day => switch day { | Monday

    | Tuesday | Wednesday | Thursday | Friday => false | Saturday | Sunday => true };
  16. let isWeekendDay = day => switch day { | Monday

    | Tuesday | Wednesday | Thursday | Friday => false | Saturday | Sunday => true };
  17. let partyTime = { day: Saturday, time: Night }; let

    day = partyTime.day; let time = partyTime.time;
  18. let partyTime = { day: Saturday, time: Night }; /*

    Destructuring */ let {day, time} = partyTime;
  19. const parseDay = index => { switch (index) { case

    0: return "Sunday"; case 1: return "Monday"; case 2: return "Tuesday"; case 3: return "Wednesday"; case 4: return "Thursday"; case 5: return "Friday"; case 6: return "Saturday"; default: throw RangeError("..."); } };
  20. const parseDay = index => { switch (index) { case

    0: return "Sunday"; case 1: return "Monday"; case 2: return "Tuesday"; case 3: return "Wednesday"; case 4: return "Thursday"; case 5: return "Friday"; case 6: return "Saturday"; default: return null; } };
  21. let parseDay = index => switch index { | 0

    => Some(Sunday) | 1 => Some(Monday) | 2 => Some(Tuesday) | 3 => Some(Wednesday) | 4 => Some(Thursday) | 5 => Some(Friday) | 6 => Some(Saturday) | _ => None };
  22. let parseDay = index => switch index { | 0

    => Some(Sunday) | 1 => Some(Monday) | 2 => Some(Tuesday) | 3 => Some(Wednesday) | 4 => Some(Thursday) | 5 => Some(Friday) | 6 => Some(Saturday) | _ => None };
  23. let showDayName = index => { let dayName = switch

    (parseDay(index)) { | Some(day) => abbreviateDay(day) | None => "(invalid day)" }; Js.log(dayName); };