README: system deps, Ultralisp link, can't share a core image

This commit is contained in:
vindarel 2022-12-09 13:46:29 +01:00
parent 2b032d18d0
commit 70acbfb580
3 changed files with 24 additions and 14 deletions

View file

@ -65,7 +65,7 @@ See [[docs/README.md][the documentation]].
- [-] settle on libraries that help newcomers
- [-] automate the documentation
- distribute (Quicklisp, Qlot, Quicklisp distribution, Ultralisp,
- distribute (Quicklisp, Qlot, Quicklisp distribution, [[https://ultralisp.org/projects/ciel-lang/CIEL][Ultralisp]],
Ultralisp distribution (upcoming)…)
- [-] ship a binary +and a core image+.
- optional: create a tool that, given a CIEL code base, explains what
@ -97,25 +97,32 @@ Rules
* Install
You will probably need the following system dependencies (names for
a Debian system):
: libmagic-dev libc6-dev gcc # from magicffi
** With Quicklisp
You need a Lisp implementation and Quicklisp installed.
CIEL is not yet on Quicklisp (but it is on [[https://ultralisp.org][Ultralisp]]), so clone this
repository and load the .asd (with =load= or =C-c C-k= in
Slime).
CIEL is not yet on Quicklisp, but it is on [[https://ultralisp.org][Ultralisp]].
So, either clone this repository:
: git clone https://github.com/ciel-lang/CIEL ~/quicklisp/local-projects/CIEL
Then, quickload it:
either install the Ultralisp distribution and pull the library from there:
: (ql-dist:install-dist "http://dist.ultralisp.org/" :prompt nil)
Then, load the .asd file (with =asdf:load-asd= or =C-c C-k= in Slime), quickload "ciel":
#+BEGIN_SRC lisp
(ql:quickload "ciel")
#+end_src
and enter the =ciel-user= package, instead of the default
=common-lisp-user= (or =cl-user=):
and enter the =ciel-user= package:
#+BEGIN_SRC lisp
(in-package :ciel-user)
@ -136,7 +143,8 @@ and use it:
Then you can configure Slime to have the choice of the Lisp image to
start. See below in [[*Use CIEL at startup]]
TODO: we will distribute ready-to-use core images.
We +will distribute ready-to-use core images+ can not distribute core
images, you must build it yourself.
** With a binary. Use CIEL's custom REPL.

View file

@ -60,11 +60,13 @@ And there is more. All the available macros are:
We import the `bind` macro from [metabang-bind](https://common-lisp.net/project/metabang-bind/user-guide.html) ([GitHub](https://github.com/gwkkwg/metabang-bind)).
The idiomatic way to declare local variables is `let`. Use it if it is fine for you.
The idiomatic way to declare local variables is `let` (and `let*`),
the way to declare local functions is `flet` (and `labels`). Use them
if it is fine for you.
However, if you ever noticed to write convoluted `let` forms, adding
list destructuring, multiple values or slot access into the mix, then
read on.
However, if you ever noticed you write convoluted `let` forms, adding
list destructuring, multiple values or slot access into the mix, and
if you use a `flet` *and then* a `let`, then read on.
`bind` integrates more variable binding and list destructuring idioms. It has two goals. Quoting:
@ -75,7 +77,7 @@ read on.
### Bind in CIEL
We import the `bind` macro. However, the package has more external
symbols that we don't import, such as its error type (`bind-erro`) and
symbols that we don't import, such as its error type (`bind-error`) and
its extension mechanism.
> Note: if you like object destructuring in general, you'll like [pattern matching](/language-extensions?id=pattern-matching).

View file

@ -155,7 +155,7 @@ eventually be evaluated.
First rule for macros: don't write a macro when a function can do.
Example macros: IF WITH-OPEN-FILE UNWIND-PROTECT DEFUN LOOP
Example macros: DEFUN LOOP SETF WITH-OPEN-FILE
See also: QUOTE BACKQUOTE GENSYM MACROEXPAND