{"id":13561617,"url":"https://github.com/exercism/elm","last_synced_at":"2025-05-16T13:02:45.153Z","repository":{"id":2353954,"uuid":"42133065","full_name":"exercism/elm","owner":"exercism","description":"Exercism exercises in Elm.","archived":false,"fork":false,"pushed_at":"2025-05-16T07:08:56.000Z","size":2093,"stargazers_count":135,"open_issues_count":15,"forks_count":112,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-05-16T13:01:45.458Z","etag":null,"topics":["community-contributions-accepted","exercism-track","maintained"],"latest_commit_sha":null,"homepage":"https://exercism.org/tracks/elm","language":"Elm","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exercism.png","metadata":{"funding":{"github":["exercism"],"custom":["https://exercism.org/donate"]},"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing-concept.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-09-08T19:04:12.000Z","updated_at":"2025-05-16T00:41:14.000Z","dependencies_parsed_at":"2023-02-17T02:17:03.338Z","dependency_job_id":"e70be9c3-bc5d-466e-b920-3cf43a1d7f52","html_url":"https://github.com/exercism/elm","commit_stats":{"total_commits":729,"total_committers":107,"mean_commits":6.813084112149533,"dds":0.877914951989026,"last_synced_commit":"41693f08370e87f69f67ef697f18375ad1ab00a0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Felm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Felm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Felm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Felm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exercism","download_url":"https://codeload.github.com/exercism/elm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254535826,"owners_count":22087398,"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":["community-contributions-accepted","exercism-track","maintained"],"created_at":"2024-08-01T13:00:59.212Z","updated_at":"2025-05-16T13:02:45.073Z","avatar_url":"https://github.com/exercism.png","language":"Elm","readme":"# Exercism Elm Track\n\n[![elm / pr](https://github.com/exercism/elm/actions/workflows/build.yml/badge.svg)](https://github.com/exercism/elm/actions/workflows/build.yml)\n[![configlet](https://github.com/exercism/elm/actions/workflows/configlet.yml/badge.svg)](https://github.com/exercism/elm/actions/workflows/configlet.yml)\n\nThis is the Elm track, one of the many tracks on [Exercism][web-exercism].\nIt holds all the Elm _Concepts_, _Concept Exercises_ and _Practice Exercises_ that are currently implemented and available for students to complete.\nThey are all listed in the [`config.json`][config-json] track config file.\nThis readme file is mainly targeted at people wishing to contribute, but feel free to take a look around if you're interested in how Exercism language tracks are set up.\n\n[web-exercism]: https://exercism.io\n\n## Track Organization\n\nThe track is organized with the following main directories and files:\n\n```\nbin/               # executables required to manage the track\nconfig/            # configuration files for the track\ndocs/              # documentation files for automatically generated web pages on exercism.io\n.github/workflows/ # CI config for automatic build and tests\nexercises/         # contains one directory per exercise\ntemplate/          # template used when generating a new exercise\nconfig.json        # main track configuration file for all exercises metadata\npackage.json       # Node package configuration required for running builds and tests\n```\n\nEach exercise within the [`exercises/`](exercises) directory has the following structure:\n\n```\nelm.json               # elm json config file for the exercise\nsrc/\n  \u003cPascalCaseSlug\u003e.elm # exercise template, where \u003cPascalCaseSlug\u003e is the name of the exercise using PascalCase.\ntests/\n  Tests.elm            # tests for exercise, imports function(s) from src/\u003cPascalCaseSlug\u003e.elm\n.meta/\n  Exemplar.elm         # exemplary / example solution for this exercise\n  config.json          # name of exercise, prerequisite concepts, concepts taught and similar\n  design.md            # describe the learning goals of the exercise\n.docs/\n   introduction.md     # introduce the concept(s) that the exercise teaches to the student\n   instructions.md     # describe the tasks to complete the exercise\n   hints.md            # provide hints to a student to help them get themselves unstuck in an exercise\n```\n\n## Contributing\n\nWe welcome contributions of all sorts and sizes,\nfrom reporting issues to submitting patches or implementing missing exercises.\nAt the moment we would particularly like some help implementing new concept exercises, and beta testing.\n\nIf you would like to help, the best thing at the moment is probably to create an issue in this repository, and then one of us will get in touch with you and discuss what to do.\n\nIf you are not familiar with git and GitHub, you can also have a look at [GitHub's getting started documentation][github-start].\n\n[contributing]: https://github.com/exercism/problem-specifications/blob/master/CONTRIBUTING.md\n[github-start]: https://help.github.com/en/github/getting-started-with-github\n\n### Setup\n\nIn order to contribute code to this track, you will probably want\n[npm][npm-install], [elm][elm-install], [elm-test][elm-test], and [elm-format][elm-format] installed globally.\nThe build and test script for this track lives at `bin/build.sh`, and uses npx, so can work without the rest of the tools being installed if required.\n\n[npm-install]: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm\n[elm-install]: https://guide.elm-lang.org/install/elm.html\n[elm-test]: https://www.npmjs.com/package/elm-test\n[elm-format]: https://github.com/avh4/elm-format\n\n### Adding Missing Concept Exercise\n\nTODO: link to the step-by-step guide instead here.\n\nVersion 3 of Exercism introduced Concepts and Concept Exercises, which are a completely new thing. There is a [dependency diagram](https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ3JhcGggTFJcbiAgQmFzaWNzW01pbmltYWwgY29tcGlsYWJsZSBmaWxlXSAtLT4gSW5kZXBlbmRlbnRzW0ltcG9ydCwgRXhwb3NpbmcsIEZ1bmN0aW9ucywgRmxvYXQsIEludCwgVHlwZSBBbm5vdGF0aW9uc10gLS0-IE1hdGhlbWF0aWNhbC1PcGVyYXRvcnNcbiAgSW5kZXBlbmRlbnRzIC0tPiBNYXRoZW1hdGljYWwtRnVuY3Rpb25zXG4gIEluZGVwZW5kZW50cyAtLT4gTGV0LUV4cHJlc3Npb25zXG4gIEluZGVwZW5kZW50cyAtLT4gRXF1YWxpdHlcbiAgRXF1YWxpdHkgLS0-IE9yZGVyaW5nXG4gIE9yZGVyaW5nIC0tPiBDb21wYXJpc29uc1xuICBJbmRlcGVuZGVudHMgLS0-IFN0cmluZ1xuICBTdHJpbmcgLS0-IFJlZ2V4XG4gIEluZGVwZW5kZW50cyAtLT4gQ2hhclxuICBJbmRlcGVuZGVudHMgLS0-IExpc3RcbiAgTGlzdCAtLT4gTGlzdC1FeHRyYVxuICBJbmRlcGVuZGVudHMgLS0-IERpY3RcbiAgSW5kZXBlbmRlbnRzIC0tPiBTZXRcbiAgSW5kZXBlbmRlbnRzIC0tPiBBcnJheVxuICBJbmRlcGVuZGVudHMgLS0-IFR5cGUtYWxpYXNcbiAgSW5kZXBlbmRlbnRzIC0tPiBTdW0tdHlwZXNcbiAgSW5kZXBlbmRlbnRzIC0tPiBCb29sZWFuc1tCb29sIHR5cGUgLyBvcGVyYXRvcnMsIElmXVxuICBDdXN0b20tdHlwZXNbQ3VzdG9tLXR5cGVzIC8gUGF0dGVybi1tYXRjaGluZ10gLS0-IE1heWJlXG4gIEJvb2xlYW5zIC0tPiBNYXliZVxuICBNYXliZSAtLT4gUmVzdWx0XG4gIEN1c3RvbS10eXBlcyAtLT4gT3BhcXVlLVR5cGVzW09wYXF1ZSBUeXBlcyAvIFBhcnNlIC8gZG9udCB2YWxpZGF0ZV1cbiAgQ3VzdG9tLXR5cGVzIC0tPiBQaGFudG9tLVR5cGVzXG4gIEN1c3RvbS10eXBlcyAtLT4gUGFyc2VyXG4gIEluZGVwZW5kZW50cyAtLT4gRnVuY3Rpb24tY29tcG9zaXRpb25cbiAgSW5kZXBlbmRlbnRzIC0tPiBGdW5jdGlvbi1jaGFpbmluZ1xuICBJbmRlcGVuZGVudHMgLS0-IFBhcnRpYWwtYXBwbGljYXRpb25cbiAgUGFydGlhbC1hcHBsaWNhdGlvbiAtLT4gUG9pbnQtZnJlZXN0eWxlXG4gIEZ1bmN0aW9uLWNvbXBvc2l0aW9uIC0tPiBQb2ludC1mcmVlc3R5bGVcbiAgRnVuY3Rpb24tY2hhaW5pbmcgLS0-IFBvaW50LWZyZWVzdHlsZVxuICBQb2ludC1mcmVlc3R5bGUgLS0-IE9wZXJhdG9yLWZ1bmN0aW9uc1xuICBJbmRlcGVuZGVudHMgLS0-IEJpdHdpc2Utb3BlcmF0b3JzXG4gIEluZGVwZW5kZW50cyAtLT4gQ29udmVyc2lvbnNcbiAgSW5kZXBlbmRlbnRzIC0tPiBQb3NpeC10aW1lIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifSwidXBkYXRlRWRpdG9yIjpmYWxzZX0) showing all the Elm concepts. You can see all concepts currently defined in [`concepts/`](concepts/), and you can se all concept exercises defined in [`/exercises/concept`](/exercises/concept).\n\nWe would love some help creating more of these concepts / concept exercises.\nTo do so, it is probably easiest to copy and paste an existing Concept and Concept Exercise. You will also need to add the meta data for these in [`config.json`][config-json], and again, the easiest way is to copy and edit an existing entry.\nThe [Concept][concept-documentation] and [Concept Exercise][concept-exercise-documentation] documentation have further details.\n\n[concept-documentation]: https://github.com/exercism/docs/blob/main/building/tracks/concepts.md\n[concept-exercise-documentation]: https://github.com/exercism/docs/blob/main/building/tracks/concept-exercises.md\n\n### Elm Packages\n\nWe have decided not to make any of the *.Extra packages available. They change quite regularly so would add maintenance work. Where one of these packages would make an exercise easier, we point this out in the instructions, so that students can copy and paste the code from the package, or can write it themselves if they want.\n\n## Elm icon\n\nWe were unable to find copyright information about the Elm logo.\nIt is a [tangram](https://en.wikipedia.org/wiki/Tangram) in the square configuration, and when you hover over the \"Playground\" on the official webpage, it changes in to a figure (a solution of the tangram game).\nThe origins of tangram are in the distant past and not well known, so we assume that there is no copyright infringement by using it.\n\n[config-json]: config.json\n","funding_links":["https://github.com/sponsors/exercism","https://exercism.org/donate"],"categories":["Elm"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexercism%2Felm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexercism%2Felm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexercism%2Felm/lists"}