Implement new Concept Exercise: `macros`

Open
#590 13 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
elixir
Domain
content

Research direction

Start with the learning objectives and the linked discussion about prerequisite placement. Decide the scope of the macros concept exercise, including whether require/use belongs, then establish its place in the concept tree and connect macros as a prerequisite and practice for dot-dsl.

Written by the indexing model from the issue text.

Description

concept-exercise v3 x:action/create x:knowledge/intermediate x:module/concept-exercise x:size/large x:type/content

Learning objectives

  • defmacro
  • the Macro module
  • what's an AST
  • when not to use macros

Out of scope

I am not sure if explaining require/use in the same exercise would be a good idea. It's a lot of difficult concepts at once. But maybe it makes sense?

Concepts

  • macros

Prerequisites

Come up with something that will put this concept far down the concept tree. Maybe this should depend on a non-existent yet concept of dynamically defining functions without macros? (see https://github.com/exercism/elixir/pull/583#discussion_r567406673)

Practice exercises

Those practice exercises should have macros in their prerequisites and as practices:

  • dot-dsl
Dominant language
Elixir
Stars
664
Forks
415
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from exercism/elixir

All issues in exercism/elixir

Similar issues

More Elixir issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.