SLIce Processing is LISP for golang.
SLIP is a mostly Common LISP implementation lacking some features and including many non standard features. Most notable of the extra features is the ability to extend LISP with Go code. Also included is a Read Eval Print Loop (REPL) that provides an environment for prototyping, testing, and exploring SLIP. While not a full implementation of Common LISP, SLIP continues to move in that direction.
A more detailed explanation of some of the features are on the features.md page.
To use, first install then start the REPL with the slip
application. A good place to start is to press ctrl-h for help. Then
try out some LISP code. Two of the most help functions are apropos
and describe. Press M-? or M-/ after a function name to get
pop-up documentation.
▶ (apropos 'json)
bag:discover-json (built-in)
bag:json-parse (built-in)▶ (describe 'car)
common-lisp:car
[symbol]
car names a built-in:
Lambda-List: (arg)
Return: object
Documentation:
car returns the car if arg is a cons, the first element if arg is
a list, and nil if arg is nil or an empty list.
Arguments:
arg: [list|cons]
The value to take the first element of.
Examples:
(car nil) => nil
(car '(a . b) => a
(car '(a b c)) => aThe REPL includes many additional features such as muliple line editing, history, tab completion, and more.
Install using go get:
go get github.com/ohler55/slip/cmd/slip
Install using brew: (when the minimum popularity metrics are achieved)
# brew install slip
See CHANGELOG.md
Plugins are available in other repositories.
- slip-mongo for mongodb APIs.
- slip-ggql for a GraphQL server.
- slip-jet for JetStream messaging APIs (contact me if interested)
- slip-message for simple NATS APIs (contact me if interested)
- slip-flow a process flow implementation (contact me if interested)
- flow-editor a process flow graphical editor (contact me if interested)
- slip-parquet for parquet APIs (contact me if interested)
- ANSI Common Lisp
- Common LISP reference LispWorks Common List HyperSpec
- Flavors
- An introduction to CLOS LISP Cookbook
- A CLOS guide: CLOS Guide
- JSON support provided by OjG.
Bug fix contributions are welcome. Please create a PR for any fixes. New features should be discussed first as the SLIP core generally follows the Common LISP specification as much as possible. SLIP can be extended with plugins and new features are often best offered with a separate plugin project. If you would like me to review a plugin just ask and I'll do my best to provide constructive comments.
On the subject of using AI, please realize that AI is just a tool and the final responsibility is you as a developer. Code that is clearly written by AI with developer cleanup or has the hallmarks of sloppy code will be rejected early.