exercism / exercism/clojure

[v3] Implement new Concept Exercise: `multi-arity functions`

Aperta
#306 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Clojure
Stelle
176
Fork
159
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

This issue describes how to implement the `multi-arity functions` concept exercise for the Clojure track.

## Getting started

**Please please please read the docs before starting.** Posting PRs without reading these docs will be a lot more frustrating for you during the review cycle, and exhaust Exercism's maintainers' time. So, before diving into the implementation, please read up on the following documents:

- [The features of v3](https://github.com/exercism/v3/blob/master/docs/concept-exercises.md).
- [Rationale for v3](https://github.com/exercism/v3/blob/master/docs/rationale-for-v3.md).
- [What are concept exercise and how they are structured?](https://github.com/exercism/v3/blob/master/docs/features-of-v3.md)

Please also watch the following video:

- [The Anatomy of a Concept Exercise](https://www.youtube.com/watch?v=gkbBqd7hPrA).

## Goal

The goal of this exercise is to teach the student how multi-arity functions are implemented in Clojure.

## Learning objectives

After completing this exercise the student will:

- Know how to define functions taking different numbers of parameters (arities)
- How to invoke them
- Creating a default value by having one arity call another

## Out of scope

- Variadic functions
- Polymorphism

## Concepts

- `functions`
- `default-arguments`
- `evaluation`
- `multiple-dispatch`
- `return-values`

## Prerequisites

- `basic-functions`
- `repl`
- `lists`

## Resources to refer to

### Hints

- [Clojure guide - functions](https://clojure.org/guides/learn/functions)

### After

- [Clojure reference - evaluation](https://clojure.org/reference/evaluation)

## Representer

This exercise does not require any modifications to the track's representer.

## Analyzer

This exercise does not require any modifications to the analyzer.

## Implementing

To implement a concept exercise, the following files must be created:

```
languages
└── clojure
└── exercises
└── concept
└──
├── .docs
| ├── instructions.md
| ├── introduction.md
| ├── hints.md
| └── after.md (optional)
├── .meta
| |── design.md
| └── Example.clj
├── .clj
└── _test.clj
```

## Help

If you have any questions while implementing the exercise, please post the questions as comments in this issue.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.