Repository files navigation
A "zha" CLISP interpreter implementation
Zha (Wiktionary ) here means not efficient / limited / bad design.
There are two implementations. Python 3 version in py directory, and C++ version in cpp directory.
Lisp
C++/Python
Sample
Result
Category
+
plus
(+ 1 2 3)
6
Arithmetics
-
minus
(- 1 2) (- 1)
-1 -1
*
mul
(* 1 2 3)
6
/
div
(/ 1 2)
1/2
1+
one_plus
(1+ 2)
3
1-
one_minus
(1- 2)
1
=
eq_
(= 1 2)
NIL
<
lt
(< 1 2)
T
<=
le
(<= 1 2)
T
>
gt
(> 1 2)
NIL
>=
ge
(>= 1 2)
NIL
SQRT
sqrt_
(SQRT 4)
2.0
ATOM
atom
(ATOM NIL) (ATOM '(1))
T NIL
Unary Predicates
LISTP
listp
(LISTP 1) (LISTP NIL)
T NIL
NULL
null
(NULL NIL) (NULL T)
T NIL
NUMBERP
numberp
(NUMBERP 0) (NUMBERP ())
T NIL
TYPEP
typep
(TYPEP 0 'NUMBER)
T
SYMBOLP
symbolp
(SYMBOLP 'A) (SYMBOLP 1)
T NIL
ZEROP
zerop
(ZEROP 0) (ZEROP 1)
T NIL
EVENP
evenp
(EVENP 0) (EVENP 1)
T NIL
ODDP
oddp
(ODDP 0) (ODDP 1)
NIL T
EQ
eq
(EQ 0 1)
NIL
Binary Predicates
EQL
eql
(EQL 0 1)
NIL
EQUAL
equal
(EQUAL '(0 1) '(0 1))
T
AND
and_
(AND T NIL)
NIL
Logic
OR
or_
(OR T NIL)
T
NOT
not_
(NOT NIL) (NOT 0)
T NIL
CAR
car
(CAR '(0 1 2))
0
List operations
CDR
cdr
(CDR '(0 1 2))
(1 2)
CONS
cons
(CONS 0 '(1 2))
(0 1 2)
MEMBER
member
(MEMBER '1 '(0 1 2))
(1 2)
LIST
list_
(LIST (+ 1 2) (- 3 4))
(3 -1)
MAPCAR
mapcar
(MAPCAR #'+ '(1 2) '(10 20))
(11 22)
High-Order Functions
MAPC
mapc
(MAPC #'+ '(1 2) '(10 20))
(1 2)
MAPLIST
maplist
(MAPLIST #'cons '(2 3) '(20 30))
(((2 3) 20 30) ((3) 30))
APPEND
append
(APPEND '(1 2) '(3 4) '(5 6))
(1 2 3 4 5 6)
REDUCE
reduce
(REDUCE #'- '(1 2 3 4))
-8
DEFUN
defun
(DEFUN F (X) (* X X))
F
Functions
LAMBDA
lambda_
((LAMBDA (X) (* X X X)) 10)
1000
APPLY
apply
(APPLY #'+ '(1 2 3))
6
FUNCALL
funcall
(FUNCALL #'+ 1 2 3)
6
FUNCTION
function
(FUNCALL (FUNCTION +) 1 2 3)
6
QUOTE
quote
(QUOTE (1 2 3))
(1 2 3)
EVAL
eval_
(EVAL '(+ 1 2))
(3)
LET
let
(LET ((X 1)) X)
1
Variables
LET*
let_star
(LET* ((X 1) (Y X)) Y)
1
SETQ
setq
(SETQ X 1) X
1 1
SET
set_
(SET 'X 1) X
1 1
COND
cond
(COND (nil 1) (t 2))
2
Conditions
IF
if_
(IF (> 1 2) 1 2)
2
DO
do_
(DO () (T 1))
1
Iteration
PROG
prog
(PROG ((X 1)) (RETURN X))
1
PRINT
print_
(PRINT 2)
2
I/O
CLEAR-ENV clears current environment (all variables and functions)
(EXIT) exits interactive mode (cannot be nested function call)
(SETRECURSIONLIMIT 1000) sets Python recursion limit
(SETSTACKLIMIT 8388608) (if LIMIT_STACK is defined) sets C++ stack size (from first call of evaluate to somewhere in current function call) to 8 MiB
0 means no limit
No effect on Python
About
A "zha" Clisp implementation
Topics
Resources
License
Stars
Watchers
Forks
You can’t perform that action at this time.