/cl-generic-arithmetic

Primary LanguageCommon LispBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

CL-GENERIC-ARITHMETIC
=====================

AUTHOR
------

Robert Smith


ABSTRACT
--------

This system provides generic arithmetic operators in CL. Most
arithmetic/numerical functions -- such as +, MAX, COS, or SQRT -- are
"CLOS-ified". They are provided in the form of packages which are
alternatives to the standard common lisp packages.

  Standard Package       CLOSified
  ----------------       -----------------------------------
  COMMON-LISP            COMMON-LISP/GENERIC-ARITHMETIC
  COMMON-LISP-USER       COMMON-LISP/GENERIC-ARITHMETIC-USER
  CL                     CL/GA
  CL-USER                CL/GA-USER


DEPENDENCIES
------------

This package makes use of CONDUIT-PACKAGES

EXAMPLE
-------

CL-USER> (ql:quickload "cl-generic-arithmetic")
To load "cl-generic-arithmetic":
  Load 1 ASDF system:
    cl-generic-arithmetic
; Loading "cl-generic-arithmetic"
.....
("cl-generic-arithmetic")
CL-USER> (in-package :cl/ga-user)
#<PACKAGE "COMMON-LISP/GENERIC-ARITHMETIC-USER">
CL/GA-USER> (+ 1 2 3 4 5)
15
CL/GA-USER> (defmethod nullary-+ ((type string)) "")
#<STANDARD-METHOD NULLARY-+ (STRING) {133731B9}>
CL/GA-USER> (defmethod unary-+ ((x string)) x)
#<STANDARD-METHOD UNARY-+ (STRING) {1279D919}>
CL/GA-USER> (defmethod binary-+ ((x string) (y string))
              (concatenate 'string x y))
#<STANDARD-METHOD BINARY-+ (STRING STRING) {128605C1}>
CL/GA-USER> (+ "hello" "world")
"helloworld"
CL/GA-USER> (defmethod abs ((x string)) (length x))
#<STANDARD-METHOD ABS (STRING) {12FE4F79}>
CL/GA-USER> (abs (+ "hello" "world"))
10


LIMITATIONS
-----------

Genericizing operators with &REST arguments requires defining NULLARY,
UNARY, and BINARY versions of the operator. This should be fixed.


COPYRIGHT
---------

Copyright (c) Robert Smith, 2011


LICENSE
-------

Please see the included file LICENSE.