Book Image

Learning ClojureScript

By : W. David Jarvis, Allen Rohner
Book Image

Learning ClojureScript

By: W. David Jarvis, Allen Rohner

Overview of this book

Clojure is an expressive language that makes it possible to easily tackle complex software development challenges. Its bias toward interactive development has made it a powerful tool, enabling high developer productivity. In this book, you will first learn how to construct an interactive development experience for ClojureScript.. You will be guided through ClojureScript language concepts, looking at the basics first, then being introduced to advanced concepts such as functional programming or macro writing. After that, we elaborate on the subject of single page web applications, showcasing how to build a simple one, then covering different possible enhancements. We move on to study more advanced ClojureScript concepts, where you will be shown how to address some complex algorithmic cases. Finally, you'll learn about optional type-checking for your programs, how you can write portable code, test it, and put the advanced compilation mode of the Google Closure Compiler to good use.
Table of Contents (15 chapters)
Learning ClojureScript
Credits
Foreword
About the Authors
About the Reviewer
www.PacktPub.com
Preface

Pattern matching with core.match


The first subject of this chapter is the pattern-matching library, core.match. Pattern matching in computer languages is a method by which a given sequence of tokens is checked for the presence of specific markers of a pattern (which is typically either a sequence or a tree of some sort). The technique has a somewhat storied history going all the way back to the SNOBOL language (1962), with the first tree-based, pattern-matching features being introduced in an extension of LISP in 1970.

Pattern matching has a number of different practical uses, from search-and-replace algorithms and other low-level regular expression logic to general tree-based data processing. The particular pattern-matching algorithm used by both Clojure and ClojureScript's implementations in core.match is an implementation of an algorithm described in Luc Maranget's paper, Compiling Pattern Matching to Good Decision Trees.

Configuring our project

core.match, like core.async, is not a part...