Next: , Previous: Top, Up: Top

1 Introduction

Antik provides a foundation for scientific and engineering computation in Common Lisp. It is designed not only to facilitate numerical computations, but to permit the use of numerical computation libraries and the interchange of data and procedures, whether foreign (non-lisp) or Lisp libraries. Notably, GSLL provides an interface to the GNU Scientific Library and is based on Antik.

There are two Common Lisp packages defined by Antik, antik and grid. Names within these packages have been chosen to match Common Lisp names where the corresponding function could be considered a generalization of the CL function. Therefore, shadowing is used to make sure that within the antik package and packages that use it, a reference to the symbol will use the Antik definition and not the CL definition.

Antik is designed and developed to provide a common foundation and interoperability between scientific, engineering and mathematical libraries, whether in Lisp or not. Interoperability means that objects created can easily be passed to one or more libraries, and libraries can be mixed and combined to solve a problem. It also means that names of like functions will be the same, differening only in the package. For example, if systems foo and bar both provide an LU decomposition, that function will be foo:lu-decomposition in one and bar:lu-decomposition in the other. Should a user wish to compare or switch libraries in such a function call, it is a simple matter of changing the package. If a whole library should be switched, the names can be used without a package prefix and the use-package form changed. This makes it easy to compare results, and select and mix the best libraries for a calculation.

There is a package defined for users to use Antik, antik-user. All the appropriate symbols are shadowed. It usees the packages common-lisp, grid, antik, and iterate. To make another package with the same use and shadowing properties, call the function antik:make-user-package.

— Function: antik:make-user-package name

Make a package in which it is convenient to use Antik and related systems. If the package already exists, the use-packages and shadowing symbols are updated.