Overview

Simple Lisp SHell (sl-sh) is a lisp based shell written in Rust. It is not POSIX compliant and makes no effort to be. It runs on the Linux and MacOS platforms. It is a Lisp-1 that is heavily inspired by Clojure and Common Lisp. It is a shell, it is a scripting language, and it is a REPL.

Some of the more prominent features:

  • The shell reader supports endfix notation so familiar bash-isms like
      cat file | tr -s " " | cut -d " " -f 2,4
    

    “just work”

  • Support for an rc file, slshrc, to set up environment and fully customize your prompt.
  • Commpon Lisp style macro system with support for quote and backquote (with , and ,@ expansion).
  • Rich set of types and cohesive standard library built around them: vectors, lists, iterators, file forms, hash maps, pairs, strings, integers, chars, and booleans.
  • OO functionality with lisp style defstruct and deftrait.
  • Dynamically Typed
  • Mutable state (it’s a shell!) but support for functional idioms is built into the standard lib, e.g. filter, reduce, apply, map, etc.
  • Import system with namespaces to make writing modular scripts and/or library code easier.
  • Common Lisp style keyword symbols with colon, :a-keyword.
  • Clojure style threading macros and scheme style pipeline operators.

Getting started

To get started, see Getting Started.