ciel/docs
2025-01-17 14:25:55 +01:00
..
assets (minor) add assets/ 2020-12-02 14:20:48 +01:00
.nojekyll doc: setup docsify 2020-11-06 15:00:12 +01:00
_coverpage.md version: 0.0-dev 2021-01-17 00:53:18 +01:00
_navbar.md doc: add forgotten navbar with "More", add three special pages (symbols from xyz) 2021-05-12 12:07:25 +02:00
_sidebar.md (minor) site icon 2024-09-04 15:11:38 +02:00
after-plus.jpeg doc: copy README to docs 2020-11-06 15:00:11 +01:00
alexandria-control-flow.md re-export if-let, when-let[*] from alexandria 2022-03-02 22:26:15 +01:00
alexandria.md (minor) regenerate dependencies list 2023-01-20 23:25:24 +01:00
before.jpeg doc: copy README to docs 2020-11-06 15:00:11 +01:00
CNAME Create CNAME 2023-03-16 16:05:36 +01:00
dependencies.md add secret-values utility, to hide passwords 2024-08-30 11:15:24 +02:00
FAQ.md FAQ with a shebang line for SBCL 2023-03-11 16:40:34 +01:00
index.html docs: change Plausible 2024-10-25 19:26:05 +02:00
install.md Restructured installation instructions 2024-09-16 17:04:23 +02:00
language-extensions.md add serapeum:partial and rcurry 2025-01-17 14:25:55 +01:00
libraries.md doc: fix access link 2024-08-31 11:46:37 +02:00
README.md (minor) docs: fight the disappearing left menu 2024-08-30 22:27:38 +02:00
repl.md shell: all commands are now interactive: interactive output, emacs -nw works 2024-09-04 14:42:00 +02:00
scripting.md scripting: run script in :ciel-user by default 2024-04-22 14:27:17 +02:00
see-also.md see also: CLNG 2021-01-15 09:17:49 +01:00
serapeum.md (minor) update Serapeum doc 2022-12-09 15:34:51 +01:00
trivial-types.md auto-document the exported symbols for: alexandria, trivial-types 2020-12-02 00:04:26 +01:00

CIEL

CIEL is a ready-to-use collection of Lisp libraries.

It's Common Lisp, batteries included.

It comes in 3 forms:

  • a binary, to run CIEL scripts: fast start-up times, standalone binary, built-in utilities.
  • a simple full-featured REPL for the terminal.
  • a Lisp library.

Questions, doubts? See the FAQ.

Status: it's a work in progress. I deployed it for client projects.

#!/usr/bin/env ciel

(-> "https://fakestoreapi.com/products?limit=5"
  http:get
  json:read-json
  (elt 0)
  (access "title"))
$ chmodx +x getproduct.lisp
$ time ./getproduct.lisp
"Fjallraven - Foldsack No…ckpack, Fits 15 Laptops"
./getproduct.lisp  0.10s user 0.02s system 24% cpu 0.466 total

Rationale

One of our goals is to make Common Lisp useful out of the box for mundane tasks -by today's standards.

Consequently, we ship libraries to handle JSON and CSV, as well as others to ease string manipulation, to have regular expressions out of the box, for threads and jobs scheduling, for HTTP and URI handling, to create simple GUIs with nodgui (Tk-based, nice theme), and so on. You can of course do all this without CIEL, but then you'd have to install the library manager (Quicklisp) first and load these libraries into your Lisp image every time you start it. Now, you have them at your fingertips whenever you start CIEL. Some of the libraries we bring in are for extending the language syntax a bit. For example, we include the Trivia library for pattern matching.

We also aim to soften the irritating parts of standard Common Lisp. A famous one, puzzling for beginners and non-optimal for seasoned lispers, is the creation of hash-tables. We include the dict function from the Serapeum library (which we enhanced further with a pull request):

CIEL-USER> (dict :a 1 :b 2 :c 3)

which prints:

(dict
 :A 1
 :B 2
 :C 3
)

In standard Common Lisp, the equivalent is more convoluted:

  (let ((ht (make-hash-table :test 'equal)))
    (setf (gethash :a ht) 1)
    (setf (gethash :b ht) 2)
    (setf (gethash :c ht) 3)
    ht)
;; #<HASH-TABLE :TEST EQUAL :COUNT 3 {1006CE5613}>
;; (and we don't get a readable representation, so our example is not even equivalent)

We add missing functions. For example, after you used parse-integer, you are probably looking for a parse-float function… but you can't find it, because it isn't defined by the standard. You must install a third-party library. Now you have it.

We enhance the docstrings of built-in functions and macros with more explanations and examples, so you don't have to reach to external documentation just yet in order to understand and try out things like mapcar or loop (look 'ma, LOOP has no docstring by default).

Moreover, we bring a user friendly REPL on the terminal, with bells and whistles useful to the developer and people living in a terminal window. For example, our repl for the terminal has readline support, multi-line editing, optional syntax highlighting, a shell passthrough, and more goodies.

We bring scripting capabilities. Just run ciel myscript.lisp, and use all the high-level CIEL libraries and Common Lisp features in your script. It starts up fast.

We are only started. You can sponsor us on GitHub sponsors, thank you!

ko-fi

If you need to learn Common Lisp the efficient way, I have a course on videos, with many real-world practical stuff in and still growing. If you are a student, drop me a line for a coupon. Thank you for your support!

Install

Let's get started. See the installation instructions.

Scripting & libraries

Then, have a look at CIEL's scripting capabilies, and on the libraries we ship.

Final words

That was your life in CL:

and now: