# short-exercises

Source templates for short exercises during the lecture, sometimes with tests.

To mark your progress during the lecture, please vote on
[sabix.eu:31337](http://sabix.eu:31337/)

## Overview:

Templates are within `src/main/scala`. Parts that you should complete are
usually marked with `???`.

| lecture                         | package                                                           | tests
|---------------------------------|-------------------------------------------------------------------|----------------------------
| 2: Functional Data Structures   | [`datastructures`](src/main/scala/datastructures)                 | `testOnly datastructures.*`
| 3: Error Handling               | [`errors`](src/main/scala/errors)                                 | `testOnly errors.*`
| 4: Laziness                     | [`laziness`](src/main/scala/laziness/)                            | `testOnly laziness.*`
| 5: Algebras, Laws, and Monoids  | [`algebra`](src/main/scala/algebra/)                              | `testOnly algebra.*`
| 6: Typeclasses                  | [`typeclasses`](src/main/scala/typeclasses/)                      | `testOnly typeclasses.*` (needs some uncommenting)
| 7: Monads                       | [`monads`](src/main/scala/monads/)                                | `testOnly monads.*` (needs some uncommenting)
| 8: Applicative Functors         | [`applicative`](src/main/scala/applicative/)                      | `testOnly applicative.*` (needs some uncommenting)
| 8: Algebraic View on more Monads| [`readerwriter`](src/main/scala/readerwriter/)                    | `testOnly readerwriter.*`

## Usage tips:
To keep your local solutions to the exercises when pulling from the repository,
use
```shell
git pull --rebase --autostash
```
This will keep both commited and uncommited changes.
If you are using Intellij IDEA, "rebase" is available as option in the update dialog and stashing is default.

### Tests:
If you are using `sbt` directly, you can use `testOnly` to run a specific test suite (see table).

To automatically run tests, whenever a file changes, use `~testOnly` (`~` also works with other sbt commands).