Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vseloved/rutils
Radical Utilities for Common Lisp
https://github.com/vseloved/rutils
Last synced: 2 months ago
JSON representation
Radical Utilities for Common Lisp
- Host: GitHub
- URL: https://github.com/vseloved/rutils
- Owner: vseloved
- License: other
- Created: 2009-09-12T05:23:21.000Z (almost 15 years ago)
- Default Branch: master
- Last Pushed: 2022-09-15T09:15:54.000Z (almost 2 years ago)
- Last Synced: 2024-02-01T12:03:06.031Z (5 months ago)
- Language: Common Lisp
- Homepage:
- Size: 501 KB
- Stars: 239
- Watchers: 16
- Forks: 34
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- curated-awesome-cl - Rutils
- awesome-cl - Rutils
README
# RUTILS is a syntactic utilities package for Common Lisp
![RUTILS logo](docs/logo.jpg)
(that aims to radically simplify the Lisp programmer's life
both in the REPL and in large system development)RUTILS stands for RADICAL-UTILITIES :)
See the [announcement](docs/ann-rutils.md).
Read the [tutorial](docs/tutorial.md) for usage details or the [quickdocs](http://quickdocs.org/rutils).
## Short history
Originally, `RUTILS` stood for `REASONABLE-UTILITIES`, but now I
switched to calling them `RADICAL-UTILITIES`, because they make
some uncommon and not generally acceptable choices in terms of style
of CL development. Namely:- Introducing several literal notations for anonymous functions,
hash-tables, heredoc-strings etc.
- Adding a lot of abbreviations of long symbols from the `CL` package
- Having several versions of the same utilities with different namesBut, what's more important, they aim to radically simplify Lisp programming
in the small (with a special accent on simplifying REPL-driven development).See the [original rationale](docs/reasonable-utilities.md) for `REASONABLE-UTILITIES`.
The current version is 5.0.0.
## Major Features
- "Modern" readtable with support for literal syntax for hash-tables,
lambdas and heredoc-strings
- Common macros like `WITH-GENSYMS`, `ONCE-ONLY`, `EVAL-ALWAYS` etc. and other symbol manipulation utilities
- Basic anaphoric macros
- A simple pair data structure and accompanying utilities
- List manipulation utilities
- Hash-table manipulation utilities
- Hash-set manipulation utilities
- Sequence manipulation utilities (including `SPLIT-SEQUENCE`, or rather, simply `SPLIT`)
- Array manipulation utilities
- String manipulation utilities
- Tree manipulation utilities
- generic access to elements of any data structure: `GENERIC-ELT`/`?`
- `ITER` macro with keywords support
- generic `BIND`
- Clojure-style threading macros `->` and `->>`## Explicitly not supported
The following broad topics are not supported by design:
* Concurrency.
The reason is not that I consider this not useful or general-purpose enough,
but rather, that it's a whole new paradigm, and the scope of `RUTILS`
is too small to comfortably accommodate it.* Functional paradigm.
As in the above, it's as well a whole other paradigm.
It has a limited, but reasonable support in CL.
Other features should be unified in it's own package,
and maybe `RUTILS` can serve as a model for such package
or even accommodate it in the future.* Advanced collections are as well a separate area in CS,
so it requires a lot of effort to maintain and develop a comprehensive package in it.Look at `FSET` and `CL-CONTAINERS` for such things.
* MOP. MOP abstraction layer is a CDR and it is as well an essential part of CL.
It is implemented and well supported by `CLOSER-MOP`.## Technical notes
### Dependencies
- [NAMED-READTABLES](http://common-lisp.net/project/named-readtables/)
- [CLOSER-MOP](https://github.com/pcostanza/closer-mop)### Exported features
The following symbols are added to `*FEATURES*`:
- `:split-sequence`
- `:iter`## Organizational notes
(c) 2009-2019, Vsevolod Dyomkin
See LICENSE for usage permissions.
See AUTHORS for credits.