#Scala Exercises
"Scala Exercises" brings exercises for the Stdlib, Cats, Shapeless and many other great libraries for Scala to your browser. Offering hundreds of solvable exercises organized into several categories covering the basics of the Scala language and it's most important libraries.
-
LEARN: Each category includes an explanation of the basics. Learn the concepts through simple code samples.
-
SOLVE: Each exercise is a unit test that must pass successfully, complete the exercise by filling in the blanks. Receive instant feedback as your answers are validated in real-time.
-
SHARE: The system will consider the category complete when all its exercises are successfully done. Don't forget to share your progress on social networks before moving on to the next category!
-
EDIT: After completing a category, you'll be able to go back and edit it. Add new exercises or improve existing ones by sending a pull-request.
- Install JDK 8, either the Oracle version or OpenJDK
- Install Scala
- Install SBT
- Install PostgreSQL 9.4
- Install the Sass Ruby gem and make sure the
sass
program can be run
First of all, either clone the repository via git
$ git clone https://github.com/scala-exercises/scala-exercises
or download it
$ wget https://github.com/scala-exercises/scala-exercises/archive/master.zip
You'll need a working PostgreSQL 9.4 database and user for running the app. Once the database is running,
create a user called scalaexercises_dev_user
$ createuser -P -e scalaexercises_dev_user "a_password"
Create a db called scalaexercises_dev
and grant all privileges on it to scalaexercises_dev_user
$ createdb scalaexercises_dev
$ psql -c "GRANT ALL PRIVILEGES ON DATABASE scalaexercises_dev TO scalaexercises_dev_user;"
Edit the site/server/conf/application.dev.conf
configuration file with your database information.
Go into the site
directory, run sbt run
$ cd site/
$ sbt run
After compilation the application will be running, listening in the 9000 port. Point your browser
to localhost:9000
and start having fun!
If you use ensime and you have configured the sbt-ensime
plugin in your sbt user
global settings, likely you might have this issue running the application locally:
java.lang.NoClassDefFoundError: scalariform/formatter/preferences/SpacesAroundMultiImports$
In that case, you could solve this issue setting up your /.sbt/0.13/plugins/plugins.sbt
file
as follow:
addSbtPlugin("org.ensime" % "ensime-sbt" % "0.4.0")
dependencyOverrides in ThisBuild += "org.scalariform" %% "scalariform" % "0.1.8"
The project has two main directories, core
and site
, each with a SBT project.
The core
directory contains an exercise runtime and exercise compiler. These allow
exercises to be defined using regular Scala which is compiled into an exercise
library.
The site
directory contains the Play website as well as some pre-packaged
exercise content. These items depend on components in core
.
At the moment, site
and core
are coupled tightly. Once this project
is a bit more stable the exercise compiler plugin will be published and it will
be easy to create new exercises for existing Scala libraries.
Contributions welcome! At this time, we don't have an official contribution guide, so please join our Gitter channel to get involved.
##License
Copyright (C) 2015-2016 47 Degrees, LLC. Reactive, scalable software solutions. http://47deg.com [email protected]
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.