Skip to content

Latest commit

 

History

History
41 lines (22 loc) · 2.21 KB

README.adoc

File metadata and controls

41 lines (22 loc) · 2.21 KB

Introduction to Functional Programming in Clojure

This repository contains the ever evolving content of an introduction to functional programming in Clojure (https://clojure.org/), the programming language I fell in love with many years ago (thanks Chas ;-)).

To look at the slides or the tutorial, simply download the repository (or clone it) and open one of the HTML files in slides/ or tutorials.

There is also a demo how to step-by-step develop a web application in Clojure from the ground up. Look for the Git tags demo-start and demo-end. Each commit in-between implements some feature towards a simple web app.

Slides

The slides use the Reveal.js presentation framework (http://lab.hakim.se/reveal-js). The content is written in Asciidoc (http://asciidoc.org/) and transformed into HTML using Assciidoctor (http://asciidoctor.org/). Follow the instructions on https://github.com/asciidoctor/asciidoctor-reveal.js to install the tool chain.

Render the HTML file from the *.adoc files in resources/slides (invoked from the project folder) using

bundle exec asciidoctor-revealjs slides/**/*.adoc

Tutorial

The HTML pages of the tutorial are also written in Asciidoc using the Asciidoctor toolchain. The interactive code evaluation is done by the KLIPSE framework (https://github.com/viebel/klipse).

Render the HTML file from the *.adoc files in tutorials/ (invoked from the project folder) using

asciidoctor tutorials/**/*.adoc

IntelliJ Workflow

The IntelliJ IDEA (https://www.jetbrains.com/idea/) can trigger the rendering on file change. Make sure you have the File Watchers plugin installed (available directly from JetBrains).

The following screenshot shows the settings I use. Each command (one for slides and one for the tutorial) is invoked only within its scope.

file watchers

Install Tools and Libraries to Compile the Documents

Thanks!

I would like to thank all of the developers that spent endless hours to creating all the libraries and tools that this tutorial is based on. Keep up the good work!