https://github.com/s-expressionists/incless
  
  
    A portable and extensible Common Lisp printer implementation 
    https://github.com/s-expressionists/incless
  
common-lisp extensible
        Last synced: 7 months ago 
        JSON representation
    
A portable and extensible Common Lisp printer implementation
- Host: GitHub
 - URL: https://github.com/s-expressionists/incless
 - Owner: s-expressionists
 - License: bsd-2-clause
 - Created: 2020-12-16T15:47:49.000Z (almost 5 years ago)
 - Default Branch: main
 - Last Pushed: 2024-10-04T15:58:19.000Z (about 1 year ago)
 - Last Synced: 2025-02-10T01:38:41.611Z (9 months ago)
 - Topics: common-lisp, extensible
 - Language: Common Lisp
 - Homepage:
 - Size: 161 KB
 - Stars: 7
 - Watchers: 6
 - Forks: 1
 - Open Issues: 0
 - 
            Metadata Files:
            
- Readme: README.md
 - License: LICENSE.md
 
 
Awesome Lists containing this project
README
          # Incless: a portable and extensible Common Lisp printer implemetation
This project implements `print-object` methods for many standard
classes and provides the interface to `write`, `print`, etc.
# Requirements
[ABCL][], [Clasp][], [ECL][], and [SBCL][] is the only current
implementations that this system has been tested on. 
In addition to a clone of this repository in a location that is
discoverable by ASDF you will also need a clone of
[nontrivial-gray-streams][].  Incless does not implement pretty
printing or `format`. These systems are implemented by [Inravina][]
and [Invistra][] which work in coordination with Incless.
# Usage
The core functionality is in the `incless` package, but the Common
Lisp-like interface of `write` and `print-object` is in the
`invistra-extrinsic` package and system. To call write try the
following in SBCL:
```
* (asdf:load-system :incless-extrinsic)
T
* (incless-extrinsic:write :wibble)
:WIBBLE
NIL
```
Incless can be loaded along with Inravina and Invistra to provide a
printer, pretty printer, and format. To load the complete stack try
the following:
```
* (asdf:load-system :invistra-extrinsic)
T
* (incless-extrinsic:pprint '(loop for i in '(a b c) 
                                    unless (eq i b) do (stuff i) (quux i) and collect i))
(LOOP FOR I IN '(A B C)
      UNLESS (EQ I B)
        DO (STUFF I)
           (QUUX I)
        AND COLLECT I)
* (invistra-extrinsic:format t "Wibble: ~a~%"
                             :quux)
Wibble: QUUX
NIL
```
[ABCL]: https://armedbear.common-lisp.dev/
[CLASP]: https://github.com/clasp-developers/clasp
[ECL]: https://ecl.common-lisp.dev/
[Inravina]: https://github.com/s-expressionists/Inravina
[Invistra]: https://github.com/s-expressionists/Invistra
[SBCL]: http://sbcl.org
[SICL]: https://github.com/robert-strandh/SICL
[nontrivial-gray-streams]: https://github.com/yitzchak/nontrivial-gray-streams