([Arg [Arg [Arg ...]]] / [Var [Var [Var ...]]])
Sie darf ausschliesslich Symbole enthalten - andere Datentypen wurden in
älteren AutoCAD-Versionen ignoriert, in neueren verursachen sie einen Fehler.
Der Aufbau der FA-Liste in PILS sieht so aus:
([Arg [Arg [Arg ...]]] [optArg [optArg ...]] / [restArg] [Var [Var [Var ...]]])
Damit die neuen Argumente von den bisherigen unterschieden werden können, müssen
sie als Listen angegeben werden.
(defun f1(a b (c . 0) / )(+ a b c))
(f1 3) => Fehler
(f1 3 4) => 7
(f1 3 4 5) => 12
(f1 3 4 5 6) => Fehler
Beispiel 2:
(defun mean(/(s))(/(apply'+ s)(length s)))
(mean 4 4 3 3 5 5) => 4
(mean 5) => 5
(mean) => Fehler
(last '(a b c)) => C
(end '(a b c)) => (C)
Änderungen von 0.1.14 -> 0.1.15:
Die Grundrechenarten bewältigen jetzt auch Floats, damit zusammenhängend sind jetzt
auch MIN und MAX implementiert, die auf dem gleichen Mechanismus beruhen.
Neue Funktionen: RPLACA (!), RPLACD (!), STRCASE, SYMBOL-NAME, INTEGERP, FLOATP, STRINGP,
SYMBOLP, ~ (alias: LOGNOT), LSH. BOOLE fehlt nach wie vor.
Eine Liste aller implementierten Funktionen:
~
>
>=
<
<=
=
+
-
*
/
1+
1-
ABS
ACOS
AND
APPEND
APPLY
ASCII
ASIN
ASSOC
ATAN
ATOF
ATOI
ATOM
BACKQUOTE
BOUNDP
BUTLAST
CAR
CDR
CAAR
CADR
CDAR
CDDR
CAAAR
CAADR
CADAR
CADDR
CDAAR
CDADR
CDDAR
CDDDR
CAAAAR
CAAADR
CAADAR
CAADDR
CADAAR
CADADR
CADDAR
CADDDR
CDAAAR
CDAADR
CDADAR
CDADDR
CDDAAR
CDDADR
CDDDAR
CDDDDR
CEIL
CHR
COND
CONS
COS
DEFUN
EIGHTH
END
EVAL
EVENP
EXP
EXPT
FIFTH
FIRST
FIX
FLOAT
FLOATP
FLOOR
FOREACH
FOURTH
IF
INTEGERP
ITOA
LAMBDA
LAST
LENGTH
LET
LET*
LIST
LISTP
LOG
LOGAND
LOGIOR
LOGNOT
LSH
MAPCAR
MAPCDR
MAX
MEMBER
MIN
MINUSP
NCONC (!)
NINETH
NOT
NTH
NTHCDR
NULL
NUMBERP
ODDP
OR
PRINC
PRINT
PROGN
QUOTE
RANDOM
READ
REM
REPEAT
REST
REVERSE
ROUND
RPLACA (!)
RPLACD (!)
ROUND
RTOS
SECOND
SET
SETQ
SEVENTH
SIN
SIXTH
SQRT
STRCAT
STRINGP
STRLEN
SUBST
SUBSTR
SYMBOL-NAME
SYMBOLP
TAN
TENTH
TERPRI
THIRD
TYPE
VER
UNLESS
WHEN
WHILE
ZEROP