• Stars
    star
    234
  • Rank 171,630 (Top 4 %)
  • Language
    Common Lisp
  • License
    Other
  • Created about 15 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Radical Utilities for Common Lisp

RUTILS is a syntactic utilities package for Common Lisp

RUTILS logo

(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.

Read the tutorial for usage details or the quickdocs.

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 names

But, 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 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

Exported features

The following symbols are added to *FEATURES*:

  • :split-sequence
  • :iter

Organizational notes

(c) 2009-2019, Vsevolod Dyomkin [email protected]

See LICENSE for usage permissions. See AUTHORS for credits.

More Repositories

1

cl-nlp

Common Lisp NLP toolset
Common Lisp
208
star
2

cl-redis

Redis client for Common Lisp
Common Lisp
180
star
3

kpi-spos

Учебный курс "Операционные системы"
Common Lisp
75
star
4

progalgs-code

Code for the book "Programming Algorithms"
Common Lisp
48
star
5

should-test

A minimal yet feature-rich Common Lisp test framework
Common Lisp
42
star
6

wiki-lang-detect

Text language identification using Wikipedia data
Common Lisp
29
star
7

crawlik

Lisp web crawler and scrapper
Common Lisp
25
star
8

cl-agraph

CL-AGRAPH — A minimal portable Lisp client for AllegroGraph
Common Lisp
24
star
9

cl-parsec

Parser combinators in Common Lisp
Common Lisp
21
star
10

prj-algo

Курс по алгоритмике в Projector
C#
21
star
11

prj-nlp-2020

Home of Projector's "Data Science. Natural Language Processing" 2020 Edition
Jupyter Notebook
18
star
12

lisp-crash-ru

Креш-курс по Lisp
Common Lisp
16
star
13

prj-algo2

Java
14
star
14

flight-recorder

Robust REPL logging facility
Common Lisp
13
star
15

const-table

Minimal Perfect Hash-Table CL Implementation
Common Lisp
12
star
16

cl-who

Forked version of Edi Weitz's HTML generator with support for macro definition
Common Lisp
10
star
17

prj-algo3

Common Lisp
9
star
18

nuts

Non-Unit Test Suite -- a test library for Common Lisp
Common Lisp
8
star
19

plain-text

A tool to extract plain text from HTML pages
Common Lisp
8
star
20

date-utils

Date utilities for Common Lisp, that use an internal plist representation of dates
Common Lisp
5
star
21

cl-git-store

Use git as storage from CL
Common Lisp
4
star
22

arnesi

Fork of Marco Barringer's arnesi (http://common-lisp.net/project/bese/arnesi.html)
Common Lisp
4
star
23

lang-uk

Ukrainian language processing using CL-NLP
Common Lisp
4
star
24

asdfx

Some potential ASDF extensions
Common Lisp
2
star
25

sc-dsalg

Data Structures & Algorithms Course @ SoftConstruct
Common Lisp
2
star
26

biochat2

Matching bioinformatics dataset for fun and profit
Common Lisp
2
star
27

vseloved.github.io

My personal website
HTML
1
star
28

asdf2-versions

Broader support for versions in ASDF2
Common Lisp
1
star
29

scripts

Misc shell & other scripts
Emacs Lisp
1
star