exercism-bot / common-lisp

Exercism exercises in Common Lisp.

Home Page:http://exercism.io/languages/common-lisp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Common Lisp

Configlet Lint Status Config Check Status Exercise Test Status

Exercism exercises in Common Lisp.

Contributing to the Common Lisp Track

There are several ways to contribute to the Common Lisp track including (but not limited to):

  • Reporting problems with the track.
  • Working on the test runner.
  • Working on the representer.
  • Working on the analyzer.
  • Working on concept exercises.
  • Working on practice exercises.
  • Working on track documents.

There are two guides to the structure of the track and tooling which would be good to be familiar with.

  • The language track guide. This describes how all the language tracks are put together, as well as details about the common metadata.

  • The track tooling guide. This describes the interface to the various tooling (test runner, representer and analyzer) as well as how they are used and invoked.

Issues

Feel free to file an issues on the track repository for problems of any size. Feel free to report typographical errors or poor wording for example. You can greatly help improve the quality of the exercises by filing reports of invalid solutions that pass tests or of valid solutions that fail tests.

For issues specifically with the analyzer, the representer, or the test runner please file the issues in the appropriate repository.

Pull Requests

Feel free to submit pull requests to correct any issues or to add new functionality.

For pull requests specifically with the analyzer, the representer, or the test runner please file the pull requests in the appropriate repository.

Pull Requests should be focused on a single change. They must pass the CI system before they will be merged.

Creating or Modifying Exercises

There are two types of exercises: concept and practice.

Concept exercises are intended to teach the student a particular concept of the language. They should be simple and short. Refer to the document on the anatomy of a concept exercises for details of the parts that are needed for a concept exercises. The work needed for a concept exercise can be large, feel free to create an issue or pull request to discuss ideas for a concept exercise so it can be worked on collaboratively.

Practice exercises are intended to allow a student to further practice and extend their knowledge of a concept. They can be longer and/or more 'clever'. Refer to the document on the anatomy of a practice exercise for details of the parts that are needed for a concept exercise. Many practice exercises are part of a canonical set of exercises shared across tracks (information on this can be found in the problem specifications repository. Before creating a new practice exercise please see if there is already a canonical problem defined there, if there is, this track will want to adhere to it rather than implementing something different.

Development Setup

This track uses SBCL for its development. Since Common Lisp is a standardized language and (at present) exercises only use features and behavior specified by the standard any other conforming implementation could be used for development of features for the track. However any tooling created for this track (such as part of its build system) must work in SBCL. It is outside the scope of this document to describe how to install a Common Lisp implementation. Please refer to the documentation for your chosen implementation for details.

The track also uses QuickLisp for system management. Please refer to its documentation for instructions on how to install it.

A note about QuickLisp & ASDF registries

The track contains some tools useful during development such as CI tasks. These are provided as ASDF systems. To ensure they are found appropriately by QuickLisp and ASDF either symbolic-link them into your quickslip/local-projects directory or by configuring your ASDF registry appropriately.

Track Build System

This track uses GitHub Actions as a build system.

It contains several workflows:

Building & Testing

To run the build "manually" execute the following from the root directory of the track:

  • In the shell: ./bin/fetch-configlet && ./configlet lint
  • In the REPL: (progn (asdf:load-system "config-checker") (config-checker:check-config))
  • In the REPL: (asdf:test-system "test-exercises")

About

Exercism exercises in Common Lisp.

http://exercism.io/languages/common-lisp

License:MIT License


Languages

Language:Common Lisp 99.3%Language:Shell 0.7%