/ferret

Ferret is a free software Clojure implementation for real time embedded control systems.

Primary LanguageMakefileBSD 2-Clause "Simplified" LicenseBSD-2-Clause

Ferret

Current Release CI Build Status BSD 2 Clause License

Ferret is a free software Clojure implementation, it compiles a restricted subset of the Clojure language to self contained ISO C++11 which allows for the use of Clojure in real time embedded control systems.

This repository contains the Ferret compiler. For more information about Ferret, including downloads and documentation for the latest release, check out Ferret's website

General Information

Quick Start

Download latest Ferret release,

wget https://ferret-lang.org/builds/ferret.jar

A program that sums the first 5 positive numbers.

;;; lazy-sum.clj
(defn positive-numbers
  ([]
   (positive-numbers 1))
  ([n]
   (cons n (lazy-seq (positive-numbers (inc n))))))

(println (->> (positive-numbers)
              (take 5)
              (apply +)))

Compile to binary using,

$ java -jar ferret.jar -i lazy-sum.clj
$ g++ -std=c++11 -pthread lazy-sum.cpp
$ ./a.out