Skip to content

Kalimehtar/cl-std

Repository files navigation

cl-std

Restructured standard library for Common Lisp

Guidelines:

  • USE-PACKAGE only when extending package
  • foo:! means "Create foo". For example, list:! == cl:list array:! == cl:make-array and so on. Also foo:! designates type.
  • foo:? means "Is it foo?". For example, list:? == listp, hash-table:? == hash-table-p
  • foo:$ means "destroy foo"
  • Only minimum symbols in base package

Used:

  • advanced-readtable
  • iterate
  • message-oo (not yet, will replace implementation of std.message)

Weak dependencies (not yet):

  • cffi
  • bordeax-threads
  • closer-mop

Implemented: http://cdr.eurolisp.org/document/8/index.html

Usage examples:

(std:defpackage #:test (:use #:base))
(std:in-package #:test)

(func:! sort (list)
    (when list
        (list:append
            (sort (list:filter list 
                               (func:!! (x) (< x (list:first list)))))
            (list:filter list (func:!! (x) (= x (list:first list))))
            (sort (list:filter list 
                               (func:!! (x) 
                                        (> x (list:first list))))))))

Of course, you may mix std and cl and use cl:lambda instead of func:!!.

About

Reclassified standard library for Common Lisp

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages