{"id":23665903,"url":"https://github.com/asarkar/fp-course-haskell","last_synced_at":"2025-06-13T23:33:06.018Z","repository":{"id":269896992,"uuid":"908775356","full_name":"asarkar/fp-course-haskell","owner":"asarkar","description":"Haskell Functional Programming Course","archived":false,"fork":false,"pushed_at":"2025-01-14T10:09:26.000Z","size":121,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T05:42:29.285Z","etag":null,"topics":["functional-programming","haskell"],"latest_commit_sha":null,"homepage":"","language":"Haskell","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/asarkar.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-27T00:00:02.000Z","updated_at":"2025-01-14T10:09:29.000Z","dependencies_parsed_at":"2024-12-27T02:29:02.295Z","dependency_job_id":"e609f0f6-f8e9-44f9-917e-c46f01405851","html_url":"https://github.com/asarkar/fp-course-haskell","commit_stats":null,"previous_names":["asarkar/fp-course-haskell"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asarkar%2Ffp-course-haskell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asarkar%2Ffp-course-haskell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asarkar%2Ffp-course-haskell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asarkar%2Ffp-course-haskell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asarkar","download_url":"https://codeload.github.com/asarkar/fp-course-haskell/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239665963,"owners_count":19677058,"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":["functional-programming","haskell"],"created_at":"2024-12-29T06:19:34.937Z","updated_at":"2025-02-19T13:29:29.441Z","avatar_url":"https://github.com/asarkar.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"My solutions to the exercises from the Haskell Functional Programming course [fp-course](https://github.com/system-f/fp-course/). The tests are rewritten using Hspec and QuickCheck instead of their homegrown framework.\n\n[![](https://github.com/asarkar/fp-course-haskell/workflows/CI/badge.svg)](https://github.com/asarkar/fp-course-haskell/actions)\n\n## Progression\n\nThe first step is to inspect the introduction modules.\n\n* [ExactlyOne](src/ExactlyOne.hs)\n* [Validation](src/Validation.hs)\n\nThey contain examples of data structures and Haskell syntax. They do not contain\nexercises and exist to provide a cursory examination of Haskell syntax.\n\nAfter this, we recommend the following progression of modules:\n\n* [Optional](src/Optional.hs)\n* [List](src/List.hs)\n* [Functor](src/Functor.hs)\n* [Applicative](src/Applicative.hs)\n* [Monad](src/Monad.hs)\n* [FileIO](src/FileIO.hs)\n* [State](src/State.hs)\n* [StateT](src/StateT.hs)\n* [Extend](src/Extend.hs)\n* [Comonad](src/Comonad.hs)\n* [Contravariant](src/Contravariant.hs)\n* [Compose](src/Compose.hs)\n* [Traversable](src/Traversable.hs)\n* [ListZipper](src/ListZipper.hs)\n* [Parser](src/Parser.hs) *(see also [Person](src/Person.hs) for the parsing rules)*\n* [MoreParser](src/MoreParser.hs)\n* [JsonParser](src/JsonParser.hs)\n* [Alternative](src/Alternative.hs)\n* [Interactive](src/Interactive.hs)\n* [Anagrams](src/Anagrams.hs)\n* [FastAnagrams](src/FastAnagrams.hs)\n* [Cheque](src/Cheque.hs)\n\n## Running tests\n\n```\n./.github/run.sh\n```\n\nTo run all matching tests:\n```\n./.github/run.sh -m \u003csome_word\u003e\n```\n\nTo run exactly matching tests:\n```\n./.github/run.sh -m \"/\u003csome_word\u003e/\"\n```\n\nTo run a _specific test_:\n```\n./.github/run.sh -m \"/Ch11/evaluates expression/eval/\"\n```\n\nTo run a file containing a `main` method:\n```\nstack runhaskell \u003cpath/to/file\u003e \u003carg1\u003e \u003carg2\u003e\n```\n\nTo run an executable listed in `package.yaml`:\n```\nstack build\nstack exec \u003cname\u003e\n```\n\n## License\n\nReleased under [Apache License v2.0](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasarkar%2Ffp-course-haskell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasarkar%2Ffp-course-haskell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasarkar%2Ffp-course-haskell/lists"}