# Infpre - A Common Lisp infix utility

Infpre is a prefix <-> infix conversion tool
for Common Lisp. The intended use is for CL programs with long math formulas.

The package infpre contains:
- infix->prefix - function
- prefix->infix - function
- math - macro
- !! - macro

## How does the infix->prefix function work?

infix->prefix takes two list arguments:
the expression and the operators. The expression
is just an ordinary lisp list and the operators are math symbols like + and *,
where list order gives presedence.
An important point is that the operators are *not binary*,
but list separators (like comma),
i.e. 1 + 2 + ... is a + separated list.

Example:
% (infix->prefix '(1 + 2 * 3 + 4) '(+ *))
(+ 1 (* 2 3) 4)

## How does the prefix->infix function work?

Hopefully as expected.
## How does the math macro work?

Works as defun, but with infix math. If name is _ then
it works as lambda.

Example:
% (math f (x)
(let ((a 0.1))
(exp (-1 * a * expt x 2))))
F
% (f 2)
0.67032003

## How does the !! macro work?

It simply applies infix->prefix with standard math operators.
Since there are no read macroes there
must be spaces between the operators.
(!! (let ((a 42)) a - 2 * 2 * 10))
2

Back to my lisp page