{"id":14530956,"url":"https://github.com/haskell-works/hw-koans","last_synced_at":"2026-02-05T04:08:59.825Z","repository":{"id":46997055,"uuid":"88731785","full_name":"haskell-works/hw-koans","owner":"haskell-works","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-28T12:19:48.000Z","size":1042,"stargazers_count":14,"open_issues_count":2,"forks_count":6,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-09-02T03:42:42.479Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/haskell-works.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-04-19T10:23:32.000Z","updated_at":"2025-02-23T10:50:31.000Z","dependencies_parsed_at":"2025-09-02T03:42:12.072Z","dependency_job_id":null,"html_url":"https://github.com/haskell-works/hw-koans","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/haskell-works/hw-koans","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haskell-works%2Fhw-koans","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haskell-works%2Fhw-koans/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haskell-works%2Fhw-koans/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haskell-works%2Fhw-koans/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/haskell-works","download_url":"https://codeload.github.com/haskell-works/hw-koans/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haskell-works%2Fhw-koans/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29111070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T03:44:17.043Z","status":"ssl_error","status_checked_at":"2026-02-05T03:44:12.077Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-09-05T00:01:11.000Z","updated_at":"2026-02-05T04:08:59.789Z","avatar_url":"https://github.com/haskell-works.png","language":"Haskell","funding_links":[],"categories":["Projects"],"sub_categories":["Exercises"],"readme":"# hw-koans [![CircleCI](https://circleci.com/gh/haskell-works/hw-koans/tree/master.svg?style=svg)](https://circleci.com/gh/haskell-works/hw-koans/tree/master)\n\nCourse for learn functional programming.\n\n## Prerequisites\n\n* `cabal-3.0.0.0` or above\n* `ghc-8.6.5` or above\n\n## Running\n\nRun:\n\n```bash\n$ git clone git@github.com:haskell-works/hw-koans.git\n$ cd hw-koans\n$ cabal v2-test --enable-tests --test-show-details=direct\n...\n15 modules not enrolled\nAll enrolled 0 test modules succeeded\nTest suite koan-test: PASS\n...\n```\n\nThe above output shows that there are `15` modules not enrolled.\nThis course is structure into modules, which are found under the\n`koan/Koan` directory.\n\nEach module defines the following a function:\n\n```haskell\nenrolled :: Bool\nenrolled = False\n```\n\nYou will need to enable the module by changing `enrolled` to `True`\nthen running the test command again:\n\n```bash\n$ cabal v2-test --enable-tests --test-show-details=direct\n━━━ Check.Functor ━━━\n  ✗ prop_fmap_void failed at test/Check/Functor.hs:43:3\n    after 1 test and 1 shrink.\n\n       ┏━━ test/Check/Functor.hs ━━━\n    40 ┃ prop_fmap_void :: Property\n    41 ┃ prop_fmap_void = property $ do\n    42 ┃   mb \u003c- forAll $ Gen.maybe (Gen.int Range.constantBounded)\n       ┃   │ Nothing\n    43 ┃   K.void mb === P.void mb\n       ┃   ^^^^^^^^^^^^^^^^^^^^^^^\n       ┃   │ ━━━ Exception (ErrorCall) ━━━\n       ┃   │ TODO: implement void\n       ┃   │ CallStack (from HasCallStack):\n       ┃   │   error, called at koan/Koan/Functor.hs:34:8 in hw-koans-0.1.0.0-inplace:Koan.Functor\n\n    This failure can be reproduced by running:\n    \u003e recheck (Size 0) (Seed 16511336219962586096 11754670307026383675) prop_fmap_void\n...\n```\n\nFrom the above you can see the failure `TODO: implement void` in the module `koan/Koan/Functor.hs`\nfile at line `34`.\n\nGo to that location to find the function `void` and implement it by replacing `error \"TODO: implement void\"`\nwith a correct implementation:\n\n```haskell\nvoid :: Functor f =\u003e f a -\u003e f ()\nvoid = error \"TODO: implement void\"\n```\n\nRun the test command to check that you've correctly implemented the function then repeat for the\nother failures until there are no more errors.\n\n## IDE support\n\nThe project will build \u0026 test in Visual Studio Code with ⌘⇧V.\n\n## List of modules\n\nThe following are modules in order of difficulty.\n\n### Introductory\n\n* `Koan.Start`\n* `Koan.List`\n* `Koan.Eq`\n* `Koan.Ord`\n* `Koan.Simple`\n\n### Beginner\n\n* `Koan.Functor`\n* `Koan.Maybe`\n* `Koan.Applicative`\n* `Koan.Monad`\n* `Koan.State`\n\n## Acknowledgements\n\nThis course was inspired by the [Data 61 Functional Programming Course](https://github.com/data61/fp-course)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaskell-works%2Fhw-koans","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaskell-works%2Fhw-koans","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaskell-works%2Fhw-koans/lists"}