This is the base project for "Zippers, Comonads and Data Structures in Scala" workshop, for the LambdaJam Australia conference.
note: please test your environment before you arrive so we can get started quickly on the day.
note: test you environment as soon as possible, but please grab the
latest copy of this repository the day before the course with a git pull origin master
.
Before you attend you will need to get a few things
ready and ensure everything is setup properly. sbt
is going to do all the heavy lifting though, so
hopefully it is all straight forward, if not, send
us an email via mark@hibberd.id.au.
Pre requisuites.
- A valid install of java 6+
- git
- if you are windows only install sbt using the msi installer
Getting scala and validating your environment (for unix):
git clone https://github.com/markhibberd/lambdajam-zippers-comonads.git
cd lambdajam-zippers-comonads
./sbt test
Getting scala and validating your environment (for windows):
git clone https://github.com/markhibberd/lambdajam-zippers-comonads.git
cd lambdajam-zippers-comonads
sbt test
For either platform this may take a few minutes. It will:
- Download the sbt build tool.
- Download the required versions of scala.
- Compile the main and test source code.
- Run the tests.
You should see a successful compilation. The tests will fail until you complete the exercises during the workshop :)
Any good text editor will be sufficient for the course. If you prefer an IDE, you can use the eclipse based scala-ide or intellij with the scala and sbt plugins installed.
You can generate project files for intellij with:
./sbt 'gen-idea no-classifiers'
You can generate project files for eclipse with:
./sbt eclipse
Just note that if you choose eclipse or intellij, have a backup texteditor as well, because there won't be enough time to debug any editor issues.
There are 35 exercises in total.
- src/main/scala/exercise1/Comonad.scala
- src/main/scala/exercise2/Zipper.scala
- src/main/scala/exercise3/Store.scala
There are test to help validate, but make sure you use the types to guide you.