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.