All Projects → exercism → Erlang

exercism / Erlang

Licence: mit
Exercism exercises in Erlang.

Programming Languages

erlang
1774 projects

Projects that are alternatives of or similar to Erlang

perl5
Exercism exercises in Perl 5.
Stars: ✭ 25 (-76.19%)
Mutual labels:  exercism-track
Lfe
Exercism exercises in Lisp Flavoured Erlang (LFE).
Stars: ✭ 17 (-83.81%)
Mutual labels:  exercism-track
Bash
Exercism exercises in Bash.
Stars: ✭ 74 (-29.52%)
Mutual labels:  exercism-track
Haskell
Exercism exercises in Haskell.
Stars: ✭ 351 (+234.29%)
Mutual labels:  exercism-track
Go
Exercism exercises in Go.
Stars: ✭ 547 (+420.95%)
Mutual labels:  exercism-track
Python
Exercism exercises in Python.
Stars: ✭ 922 (+778.1%)
Mutual labels:  exercism-track
common-lisp
Exercism exercises in Common Lisp.
Stars: ✭ 65 (-38.1%)
Mutual labels:  exercism-track
Elm
Exercism exercises in Elm.
Stars: ✭ 100 (-4.76%)
Mutual labels:  exercism-track
Rust
Exercism exercises in Rust.
Stars: ✭ 651 (+520%)
Mutual labels:  exercism-track
Coffeescript
Exercism exercises in CoffeeScript.
Stars: ✭ 11 (-89.52%)
Mutual labels:  exercism-track
Ruby
Exercism exercises in Ruby.
Stars: ✭ 381 (+262.86%)
Mutual labels:  exercism-track
Elixir
Exercism exercises in Elixir.
Stars: ✭ 400 (+280.95%)
Mutual labels:  exercism-track
Delphi
Exercism exercises in Delphi Pascal.
Stars: ✭ 24 (-77.14%)
Mutual labels:  exercism-track
pharo-smalltalk
exercism.org/tracks/pharo-smalltalk
Stars: ✭ 24 (-77.14%)
Mutual labels:  exercism-track
Fsharp
Exercism exercises in F#.
Stars: ✭ 77 (-26.67%)
Mutual labels:  exercism-track
groovy
Exercism exercises in Groovy.
Stars: ✭ 18 (-82.86%)
Mutual labels:  exercism-track
Prolog
Exercism exercises in Prolog.
Stars: ✭ 18 (-82.86%)
Mutual labels:  exercism-track
Php
Exercism exercises in PHP.
Stars: ✭ 100 (-4.76%)
Mutual labels:  exercism-track
Scala
Exercism exercises in Scala.
Stars: ✭ 88 (-16.19%)
Mutual labels:  exercism-track
Idris
Exercism exercises in Idris.
Stars: ✭ 25 (-76.19%)
Mutual labels:  exercism-track

Exercism Erlang Track

Join the chat at https://gitter.im/exercism/erlang

Exercism exercises in Erlang

Contributing guide

For general information about how exercism works, please see the contributing guide.

If you create “claiming” PRs with obviously unfinished code, please provide an estimate in the PR description when you will continue to work on the PR or you think it will be finished.

Setting up your system for local development on the track

Please make sure you have installed erlang/OTP and rebar3 as described on Installing Erlang or docs/INSTALLATION.md in this repository. Also run bin/fetch-configlet to download the JSON-checker.

Please make sure you use one of the releases of erlang/OTP as specified in .github/workflows/main.yml (see the jobs.test_erlang.strategy.matrix.otp key), as these are the ones officially tested and supported by this track.

Feel free to use any feature that was introduced in the oldest version of the range, while also avoiding everything that has been removed or deprecated in the newest one.

Implementing an exercise

When there is a mention of "slug-name", it refers to the slug as used on exercism URLs. In contrast, "erlangified_slug_name" is the slug-name with all dashes (-) replaced by underscores (_) to make the name compatible with Erlang syntax.

  1. Create a folder exercises/<slug-name>.
  2. Set up folder structure (src, and test).
  3. Copy rebar.config and src/*.app.src from another exercise. 1. Leave rebar.config unchanged. 1. Rename src/*.app.src to src/<erlangified_slug_name>.app.src. 1. On the first line of this file change the old erlangified_slug_name to the new one. 1. On the second line change the old slug-name to the new one.
  4. In the src-folder, create two files: example.erl and <erlangified_slug_name>.erl. The first is for your example solution, the second is the 'empty' solution to give students a place to start. You might take the files from another exercise as your starting point. Ensure their module names match their (new) file names.
  5. In the test-folder, create one file: <erlangified_slug_name>_tests.erl and insert the boilerplate code shown below. This file is for the test cases.
  6. Implement/correct your solution in src/example.erl.
  7. Add tests to <erlangified_slug_name>_tests.erl.
  8. Run tests using rebar3 eunit.

Repeat steps 6, 7, and 8 until all tests are implemented and your example solution passes them all.

If there is a exercises/<slug-name>/canonical-data.json in problem-specifications, make sure to implement your tests and examples in a way that the canonical data is integrated and not violated.

You may add further tests, as long as they do not violate canonical data and add value to the exercise or are necessary for erlang specific things.

Also please make sure to add a HINTS.md with some hints for the students if the exercise becomes tricky or might not be obvious.

-module(<test module name>).

-include_lib("erl_exercism/include/exercism.hrl").
-include_lib("eunit/include/eunit.hrl").

You will need to add entry for the exercise in the track's config.json file, which you will find in the respository's root directory (two levels up). For details see Exercise configuration.

Before pushing

Please make sure, that all tests pass by running _test/check-exercises.escript. On windows you might need to call escript _test/check-exercises.escript. Also a run of bin/configlet lint should pass without error message.

Both programs will be run on CI and a merge is unlikely if tests fail.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].