core.match - A pattern matching library for Clojure[script] - is available for self-hosted ClojureScript. It means that it can run in Planck and Klipse.

The code is available as a fork of core.match called abbinare.

The approach is similar to what Mike Fikes did for core.async with andare.

Both names comes from italian: “andare” means “go” and “abbinare” means match (in the sense of combine).


In order to use core.match in Klipse, simply require it and Klipse will fetch abbinare code from its analysis cache repository:

(require '[cljs.core.match :refer-macros [match]])

In order to use core.match in Planck, add abbinare as a dependency with:

 [viebel/abbinare "1.10.597"]

Here is a quick demo - running in your browser - of a solution to the famous Fizz buzz interview question with core.match:

(with-out-str (doseq [n (range 1 11)]
    (match [(mod n 3) (mod n 5)]
           [0 0] "FizzBuzz"
           [0 _] "Fizz"
           [_ 0] "Buzz"
           :else n))))

Want more core.match cool stuff in your browser? Read this core.match interactive tutorial.