Exercism exercises in Erlang
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.
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 .travis.yml
, 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.
When there is a mention of “slug-name” it refers to the slug as used
on exercism URLs, “erlangified_slug_name” does mean, that you have to
replace dashes (-
) in the slug by underscores (_
) to make them
compatible with erlang syntax.
- Create a folder
exercises/<slug-name>
- Set up folder structure (
include
,src
, andtest
). - Copy
rebar.conf
,src/*.app.src
, andinclude/exercism.hrl
from another exercise. 3.1. Find the line{eunit_tests, [{application, <erlangified_slug_name>}]}
inrebar.conf
and alter it to match the current exercise. 3.2. Renamesrc/*.app.src
tosrc/<erlangified_slug_name>
. 3.3. Change the old erlangified_slug_name on the first line to the new one. 3.4. Change the old slug-name on the second line to the new one. 3.5. Leaveinclude/exercism.hrl
untouched. - Create a testfile/-module in
test
-folder. It is preferred to name it after the erlangified_slug_name and insert the boilerplate code shown below. - Implement your example in
src/example.erl
and useexample
as the name for the module. - Add tests. Make sure you are using the macro
?TESTED_MODULE
when referencing the students module. - Run tests using
rebar3 eunit
.
Repeat steps 5., 6., and 7. until all tests are implemented and your solution passes all tests.
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>).
-define(TESTED_MODULE, (sut(<erlangified_slug_name>))).
-define(TEST_VERSION, 1).
-include("exercism.hrl").
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
should pass without error message.
Both programs will be run on Travis and a merge is unlikely when tests fail.