{"id":15985860,"url":"https://github.com/benhutchison/modesofcomposition","last_synced_at":"2025-03-17T19:31:32.231Z","repository":{"id":39979342,"uuid":"264548114","full_name":"benhutchison/modesofcomposition","owner":"benhutchison","description":"Lambdajam 2021 online workshop in Compositional Functional Programming in Scala","archived":false,"fork":false,"pushed_at":"2024-07-04T13:37:18.000Z","size":1602,"stargazers_count":6,"open_issues_count":15,"forks_count":9,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-09T02:40:22.103Z","etag":null,"topics":["cats","cats-effect","functional-programming","scala","typelevel"],"latest_commit_sha":null,"homepage":"","language":"Scala","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/benhutchison.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-16T23:39:23.000Z","updated_at":"2024-05-19T12:25:06.000Z","dependencies_parsed_at":"2023-02-11T04:45:43.129Z","dependency_job_id":null,"html_url":"https://github.com/benhutchison/modesofcomposition","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/benhutchison%2Fmodesofcomposition","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benhutchison%2Fmodesofcomposition/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benhutchison%2Fmodesofcomposition/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benhutchison%2Fmodesofcomposition/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benhutchison","download_url":"https://codeload.github.com/benhutchison/modesofcomposition/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221699034,"owners_count":16865970,"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":["cats","cats-effect","functional-programming","scala","typelevel"],"created_at":"2024-10-08T02:40:35.425Z","updated_at":"2024-10-27T15:32:35.637Z","avatar_url":"https://github.com/benhutchison.png","language":"Scala","readme":"# Modes of composition\n\nWorkshop in Compositional Functional Programming in Scala, developed by Ben Hutchison (`brhutchison@gmail.com`)\n\n## Workshop History\n\n- Scheduled Lambdajam Online 2021, May 3 \u0026 4, 10am\n- Presented Lambdajam Online 2020, July 20 \u0026 21 2020, 10am \n\n## Layout\n\nThe workshop consists of a [conceptual overview slidepack](ModesCompositionSlides.pdf) followed by a progression of structured, guided exercises\nthat illustrate how the concepts show up in practical code.\n\nStart with the [introduction slidepack](ModesCompositionSlides.pdf). Then each exercise should be attempted in order. The goal is to get the code to compile against the provided type signatures, and any associated unit tests to run green. \n\nThere is a PDF slidepack in each subdirectory containing:\n- A statement of the problem\n- How the exercise relates to broader principles covered in the workshop\n- A Hints section with additional guidance \u0026 explanation, if required.\n\nEvery exercise step has a corresponding solution directory with a complete working solution. You can check your answer against the provided solution, or if you get stuck you can look at the solution. Attempting a problem with only partial success, and then studiying the solution, can stimulate learning quite effectively.\n\n- [Step1 Decoding an Order](./step1/)   ( [step1 solution](./step1solution/) )  \n- [Step2 Validating an Order](./step2/)   ( [step2 solution](./step2solution/) )  \n- [Step3 Processing Unavailable Order](./step3/)   ( [step3 solution](./step3solution/) )  \n- [Step4 Processing Available Orders](./step4/)   ( [step4 solution](./step4solution/) )  \n- [Step5 Procesing an Order Sream](./step5/)   ( [step5 solution](./step5solution/) )  \n\n## Getting Started\n\nTo do the hands on exercises you need existing familiarity with the Scala language and:\n\n- JDK 8 or higher [installed](https://adoptopenjdk.net/installation.html)\n- Scala Build Tool (SBT) [installed](http://www.scala-sbt.org/release/docs/Setup.html)\n- An IDE such as [Intellij Community with Scala plugin](https://www.jetbrains.com/idea/download/) is recommended\n\nThe project uses a number of libraries from the [Typelevel functional ecosystem](https://typelevel.org/). They will be automatically\ndownloaded by SBT but the process can take from 5-30 minutes. Therefore, once SBT is installed, enter the following in a terminal to ensure all libraries download and the code works as expected:\n\n```\n\u003e sbt\nsbt\u003e solution/test \n```\nExpect to see the libraries download, then compilation, and finally tests tun green.\n\n## Libraries Used\n\n* [Cats](https://typelevel.org/cats/)\n* [Cats Effect 3.x](https://typelevel.org/cats-effect/)\n* [Circe](https://circe.github.io/circe/)\n* [FS2 3.x](https://fs2.io/)\n* [Refined](https://github.com/fthomas/refined)\n* [Mouse](https://github.com/typelevel/mouse)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenhutchison%2Fmodesofcomposition","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenhutchison%2Fmodesofcomposition","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenhutchison%2Fmodesofcomposition/lists"}