Skip to content
This repository has been archived by the owner before Nov 9, 2022. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

This project is dormant. I have not worked on it in years, and am unlikely to continue work on it anytime soon. I encourage you to check out "mal" -- "Make a Lisp" -- by Joel Martin, a project inspired by this one, that includes implementations in dozens of languages, including Bash: While it's missing garbage collection, mal's Bash Lisp is incredibly clean and easy to hack on. For additional historical perspective, see this article on my homepage.


gherkin logo

gherkin is a functional programming language and interpreter written in GNU Bash 4 designed for extreme portability across *nix platforms. For rationale, see Why gherkin?

gherkin is a dialect of Lisp, and like other Lisps such as Clojure and [Scheme]( it features homoiconicity, first-class functions, and primitive functions for operating on a variety of data types such as strings, integers, symbols, and lists. As a citizen of *nix and the shell environment, it also provides *nix and shell interoperation facilities.

gherkin is currently alpha status, but our hope is to continue feature development until gherkin can be used in place of Bash for general purpose *nix scripting. If you're curious about our progress toward our first release, see our milestones.

Try gherkin

gherkin requires GNU Bash version 4 or higher. If you're on Linux, this is probably already your shell. If you're on a Mac, we recommend you install a recent version of Bash with Homebrew.


Start a Read-Evaluate-Print-Loop (REPL) and evaluate a simple expression:

> (+ 1 2)

You may exit the REPL with Ctrl-D.

Running a script

Run fib.gk to find the 60th Fibonacci number:

./gherkin -l fib.gk

Start a REPL and try a core library function:

> (load-file "core")
> (map inc '(1 2 3))
(2 3 4)

You may also load the core library and start a REPL with ./gherkin -l core.gk -r.

Learning more & getting involved

gherkin is brand new, under active development, and not yet formally released. As such, its usage is error-prone and its documentation spotty. If you'd like to help us improve gherkin, its documentation, or have any questions, please join us:

Related tools



a functional programming language and interpreter written in GNU Bash 4







No releases published


No packages published