Giter Club home page Giter Club logo

exercism-elm's Introduction

Exercism Elm Track

build status configlet

This is the Elm track, one of the many tracks on Exercism. It holds all the Elm Concepts, Concept Exercises and Practice Exercises that are currently implemented and available for students to complete. They are all listed in the config.json track config file. This 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.

Track Organization

The track is organized with the following main directories and files:

bin/               # executables required to manage the track
config/            # configuration files for the track
docs/              # documentation files for automatically generated web pages on exercism.io
.github/workflows/ # CI config for automatic build and tests
exercises/         # contains one directory per exercise
template/          # template used when generating a new exercise
config.json        # main track configuration file for all exercises metadata
package.json       # Node package configuration required for running builds and tests

Each exercise within the exercises/ directory has the following structure:

elm.json               # elm json config file for the exercise
src/
  <PascalCaseSlug>.elm # exercise template, where <PascalCaseSlug> is the name of the exercise using PascalCase.
tests/
  Tests.elm            # tests for exercise, imports function(s) from src/<PascalCaseSlug>.elm
.meta/
  Exemplar.elm         # exemplary / example solution for this exercise
  config.json          # name of exercise, prerequisite concepts, concepts taught and similar
  design.md            # describe the learning goals of the exercise
.docs/
   introduction.md     # introduce the concept(s) that the exercise teaches to the student
   instructions.md     # describe the tasks to complete the exercise
   hints.md            # provide hints to a student to help them get themselves unstuck in an exercise

Contributing

We welcome contributions of all sorts and sizes, from reporting issues to submitting patches or implementing missing exercises. At the moment we would particularly like some help implementing new concept exercises, and beta testing.

Things are currently in a state of flux with the upcoming v3 release of exercism, so if 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.

If you are not familiar with git and GitHub, you can also have a look at GitHub's getting started documentation.

Setup

In order to contribute code to this track, you will probably want npm, elm, elm-test, and elm-format installed globally. The 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.

Adding Missing Concept Exercise

TODO: link to the step-by-step guide instead here.

Version 3 of Exercism introduced Concepts and Concept Exercises, which are a completely new thing. There is a dependency diagram showing all the Elm concepts. You can see all concepts currently defined in concepts/, and you can se all concept exercises defined in /exercises/concept.

We would love some help creating more of these concepts / concept exercises. To 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, and again, the easiest way is to copy and edit an existing entry. The Concept and Concept Exercise documentation have further details.

Elm icon

We were unable to find copyright information about the Elm logo, nor information about who designed it. Presumably Evan Czaplicki, creator of the Elm language, also made the logo, and holds copyright. It may also fall within the public domain, since it is a geometric shape. We've adapted the official Elm logo by changing the colors, which we believe falls under "fair use".

exercism-elm's People

Contributors

tgecho avatar tuxagon avatar mpizenberg avatar erikschierboom avatar parkerl avatar ceddlyburge avatar jiegillet avatar nathanielknight avatar dependabot[bot] avatar leojpod avatar exercism-bot avatar kytrinyx avatar phippsaurus avatar mrattner avatar siriusstarr avatar edgerunner avatar jehoshua02 avatar anuragsoni avatar benreyn avatar churchie317 avatar iamvery avatar ihid avatar michaelglass avatar rebelwarrior avatar michaelkpfeifer avatar clairethompson avatar janiczek avatar ee7 avatar thomchop avatar ulve avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.