Skip to content
Repository of related materials to the workshop
Clojure CSS HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
01.syntax
02.data_types
03.data_access_and_transformation
04.atom
05.control_flow
06.higher_order_fns
07.js_interop
08.destructuring
09.multi_arity_fns
10.multi_methods
11.protocols_and_named_data_types
12.macros
13.namespaces/app
14.project_setup_dev_prod/app
15.reagent/calculator
16.re-frame/calculator
17.final_exam
.gitignore
README.md
lisp_basics.pdf

README.md

ClojureScript Workshop

Repository of related materials to the workshop

Join the chat at https://gitter.im/roman01la/clojurescript-workshop

📺 Screencast (RU)

Table of contents

Why Lisp?

  • Ex­pres­sive­ness — when a language allows you to put more meaning with less code. It is not just about con­ci­sion, but also pre­ci­sion, read­abil­ity, flex­i­bil­ity and po­ten­tial for abstraction.
  • Everything is an expression. Most languages has both statements and expressions, which you can not really combine together, but in Lisp everything is an expression. A single uniform interface allows to compose everything naturally. Take for example Lego blocks: you can build whatever you want easily because those blocks are following the same rule of composition.
  • An ex­pres­sion is ei­ther a sin­gle value or a list. There are single values like strings and numbers. But function calls and list data structure are all lists. So basically the whole point of writing a Lisp program is to combine together lists of lists and single values. This gives the same power of composition similar to expressions.
  • Func­tional pro­gram­ming. Lisps are considered to be functional languages (there are also OOP capabilities). It means they are focused on avoiding data mutation and state. This allows developers to build truly reusable components and structure programs in a clean way. You can see that all new programming languages are mostly functional, so we can say that functional programming style has proved to be a good tool when building software.

The list above is inspired by an article “Why Racket? Why Lisp?”.

Requirements

It's nice to know the following...

  • React.js library (learn)
  • State management solutions like Flux (learn)
  • A concept of immutability (learn)
  • Basics of functional programming (learn)

Preparation

You have to be prepared for the workshop, so we don't have to waste time for this.

Java

Make sure you have Java 1.6 or greater.

Leiningen

Install via Homebrew: brew install leiningen or other package managers.

Or using shell script:

  1. Download the lein script (or on Windows lein.bat)
  2. Place it on your $PATH where your shell can find it (eg. ~/bin)
  3. Set it to be executable (chmod a+x ~/bin/lein)
  4. Run it (lein) and it will download the self-install package

Or with Windows installer.

Readline wrapper

brew install rlwrap

or

  1. Clone the repo: https://github.com/hanslub42/rlwrap
  2. Execute
./configure
make
make install

ClojureScript REPL

Install Lumo

via NPM

npm i -g lumo-cljs

via Homebrew

brew install lumo

Configure your editor

Atom

Follow this manual. You don't have to install and configure everything, the important parts are: Parinfer plugin, language-clojure settings, lisp-paredit settings and Atom Settings sections.

Sublime Text

VS Code

Vim

Links

Books

Job Boards

You can’t perform that action at this time.