Elxlisp

Lisp 1.5 M-expression. Also S-expression is available with invoke option.

Installation

make clone from GitHub

invoke

example

mix elxlisp
Lisp 1.5 in Elixir M-expression in sequential
? cons[A;B]
(A . B)
? car[(A B C)]
A
? third[x]=car[cdr[cdr[x]]]
third
? third[(1 2 3)]
3
? load["test.meta"]
t
? fact[10]
3628800
? intersection[(A B C);(D C A)]
(A C)
? quit[]
goodbye

environment is association list

Lisp 1.5 in Elixir M-expression in sequential
? eval[(cons x y);((x . 1)(y . 2))]
(1 . 2)
?

parallel

When invoke in parallel, evlis function runs in parallel. Fibonacci runs faster in parallel. See test.meta

Lisp 1.5 in Elixir M-expression in sequential
? load["test.meta"]
T
? time[fib[30]]
"time: 3455959 micro second"
"-------------"
832040
? quit[]
"goodbye"

$ mix elxlisp para
Lisp 1.5 in Elixir in parallel
? load["test.meta"]
T
? time[fib[30]]
"time: 2168482 micro second"
"-------------"
832040
?

compiler

Lisp 1.5 in Elixir M-expression in sequential
? compile["test.meta"]
ok
? load["test.o"]
T
? time[fib[30]]
"time: 23140 micro second"
"-------------"
832040
? time[tarai[12;6;0]]
"time: 105260 micro second"
"-------------"
12
? time[ack[3;9]]
"time: 98380 micro second"
"-------------"
4093
?

data type

special form

primitive

Acknowledgment

special thanks Dr. John McCarthy

Reference document

Lisp 1.5 programmer's manual