Adding all tracks, I guess
This commit is contained in:
68
common-lisp/hello-world/README.md
Normal file
68
common-lisp/hello-world/README.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# Hello World
|
||||
|
||||
The classical introductory exercise. Just say "Hello, World!".
|
||||
|
||||
["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is
|
||||
the traditional first program for beginning programming in a new language
|
||||
or environment.
|
||||
|
||||
The objectives are simple:
|
||||
|
||||
- Write a function that returns the string "Hello, World!".
|
||||
- Run the test suite and make sure that it succeeds.
|
||||
- Submit your solution and check it at the website.
|
||||
|
||||
If everything goes well, you will be ready to fetch your first real exercise.
|
||||
|
||||
## Setup
|
||||
|
||||
Check out [Exercism Help](http://exercism.io/languages/common-lisp) for instructions to
|
||||
get started writing Common Lisp. That page will explain how to install and setup
|
||||
a Lisp implementation and how to run the tests.
|
||||
|
||||
## Formatting
|
||||
|
||||
While Common Lisp doesn't care about indentation and layout of code,
|
||||
nor whether you use spaces or tabs, this is an important consideration
|
||||
for submissions to exercism.io. Excercism.io's code widget cannot
|
||||
handle mixing of tab and space characters well so using only spaces is recommended to make
|
||||
the code more readable to the human reviewers. Please review your
|
||||
editors settings on how to accomplish this. Below are instructions for
|
||||
popular editors for Common Lisp.
|
||||
|
||||
### VIM
|
||||
|
||||
Use the following commands to ensure VIM uses only spaces for
|
||||
indentation:
|
||||
|
||||
```vimscript
|
||||
:set tabstop=2
|
||||
:set shiftwidth=2
|
||||
:set expandtab
|
||||
```
|
||||
|
||||
(or as a oneliner `:set tabstop=2 shiftwidth=2 expandtab`). This can
|
||||
be added to your `~/.vimrc` file to use it all the time.
|
||||
|
||||
### Emacs
|
||||
|
||||
Emacs is very well suited for editing Common Lisp and has many
|
||||
powerful add-on packages available. The only thing that one needs to
|
||||
do with a stock emacs to make it work well with exercism.io is to
|
||||
evaluate the following code:
|
||||
|
||||
`(setq indent-tab-mode nil)`
|
||||
|
||||
This can be placed in your `~/.emacs` (or `~/.emacs.d/init.el`) in
|
||||
order to have it set whenever Emacs is launched.
|
||||
|
||||
One suggested add-on for Emacs and Common Lisp is
|
||||
[SLIME](https://github.com/slime/slime) which offers tight integration
|
||||
with the REPL; making iterative coding and testing very easy.
|
||||
|
||||
## Source
|
||||
|
||||
This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program)
|
||||
|
||||
## Submitting Incomplete Solutions
|
||||
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
21
common-lisp/hello-world/hello-world-test.lisp
Normal file
21
common-lisp/hello-world/hello-world-test.lisp
Normal file
@@ -0,0 +1,21 @@
|
||||
(ql:quickload "lisp-unit")
|
||||
#-xlisp-test (load "hello-world")
|
||||
|
||||
(defpackage #:hello-world-test
|
||||
(:use #:common-lisp #:lisp-unit))
|
||||
|
||||
(in-package #:hello-world-test)
|
||||
|
||||
(define-test hello-world-test
|
||||
(assert-equal "Hello World!" (hw:hello-world)))
|
||||
|
||||
(define-test hello-alice-test
|
||||
(assert-equal "Hello Alice!" (hw:hello-world "Alice")))
|
||||
|
||||
(define-test hello-bob-test
|
||||
(assert-equal "Hello Bob!" (hw:hello-world "Bob")))
|
||||
|
||||
#-xlisp-test
|
||||
(let ((*print-errors* t)
|
||||
(*print-failures* t))
|
||||
(run-tests :all))
|
6
common-lisp/hello-world/hello-world.lisp
Normal file
6
common-lisp/hello-world/hello-world.lisp
Normal file
@@ -0,0 +1,6 @@
|
||||
(defpackage #:hello-world
|
||||
(:use #:common-lisp)
|
||||
(:export #:hello-world)
|
||||
(:nicknames #:hw))
|
||||
|
||||
(in-package #:hello-world)
|
Reference in New Issue
Block a user