{"id":15061170,"url":"https://github.com/protoship/learn-reasonml-workshop","last_synced_at":"2025-04-06T11:10:44.091Z","repository":{"id":31946133,"uuid":"130686420","full_name":"protoship/learn-reasonml-workshop","owner":"protoship","description":"Learn ReasonML with 24 exercises. No prior functional programming knowledge required.","archived":false,"fork":false,"pushed_at":"2024-02-05T06:21:32.000Z","size":163,"stargazers_count":269,"open_issues_count":2,"forks_count":45,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-30T09:09:54.320Z","etag":null,"topics":["ocaml","reasonml"],"latest_commit_sha":null,"homepage":"","language":"Reason","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/protoship.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-23T11:29:21.000Z","updated_at":"2024-12-11T20:36:02.000Z","dependencies_parsed_at":"2024-09-29T06:41:00.213Z","dependency_job_id":"dad09fc2-5ba1-4303-b3d7-754c7a77f454","html_url":"https://github.com/protoship/learn-reasonml-workshop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protoship%2Flearn-reasonml-workshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protoship%2Flearn-reasonml-workshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protoship%2Flearn-reasonml-workshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protoship%2Flearn-reasonml-workshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/protoship","download_url":"https://codeload.github.com/protoship/learn-reasonml-workshop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247471521,"owners_count":20944158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ocaml","reasonml"],"created_at":"2024-09-24T23:10:56.271Z","updated_at":"2025-04-06T11:10:44.049Z","avatar_url":"https://github.com/protoship.png","language":"Reason","funding_links":[],"categories":["Reason"],"sub_categories":[],"readme":"# Introduction\n\nReason is a language that looks and reads like Javascript, writes like Javascript, and even interops nicely with Javascript. But it is in fact a new syntax for OCaml, a powerful statically typed functional programming language.\n\nThe syntax makes ReasonML easy to start playing with, but unless you already know a typed functional language, you will soon run into stumbling blocks because of unfamiliarity with static types and functional programming.\n\nFear not! Work through these exercises and learn all the basics - defining and using functions, understanding recursion, lists, list operations, variants, and all the way till mutable variables. They will give you a great foundation to start mastering this beautiful language.\n\n# Credits\n\nThese exercises are originally from [a workshop organized by Jane Street](https://blog.janestreet.com/learn-ocaml-nyc/) for teaching `OCaml` to programmers who work in other languages and who do not necessarily have experience with functional languages. [Link to the original repo](https://github.com/janestreet/learn-ocaml-workshop). We adapted the tutorials and exercise code to the Reason syntax and toolchain.\n\n# Setting Up\n\n1. Setup your editor. We recommend `VSCode` along with the [vscode-reasonml](https://github.com/reasonml-editor/vscode-reasonml) extension. If you prefer a different editor check the instructions for [other supported editors](https://reasonml.github.io/docs/en/editor-plugins.html)\n\n2. Clone this repository, and run `npm install`.\n\n# Workflow\n\nThe exercises are numerically ordered and can be found in the `src/exercises` directory.\n\nStart by opening the first exercise in a text editor - `src/exercises/01-introduction/introduction.re`. It will tell you where to go from there.\n\nAll exercises except the first one comes with a test. Run them as you complete each exercise. For example for the second exercise, run its test with:\n\n```\nnode src/exercises/02-basic_types/basicTypes.bs.js\n```\n\nThis `.bs.js` file is your Reason program (`.re`) compiled to Javascript. `.bs` stands for the [bucklescript compiler](https://bucklescript.github.io/). The `.bs.js` code is readable Javascript - give them a look if you're curious!\n\nYou can also run `./run_tests` which will run all the tests automatically for you and stop at the first failing one.\n\n# Support\n\nPlease feel free to raise an issue if you have any questions as you work through the exercises. You can also find help in the [Reason Discord channel](https://discord.gg/reasonml), or in the [Reason Discourse forum](https://reasonml.chat/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotoship%2Flearn-reasonml-workshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprotoship%2Flearn-reasonml-workshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotoship%2Flearn-reasonml-workshop/lists"}