Large diffs are not rendered by default.

File renamed without changes.
@@ -23,6 +23,7 @@
;; constants
(maca undefined)
(maca t)
(maca t a "string")

;; assignments
(maca (= number 3))
@@ -49,6 +50,7 @@

;; assignments

(maca (var a 3))
(maca (= a 3))
(maca (= a (a > b > v)))
(maca (a > b > v))
@@ -60,7 +62,7 @@
(maca (>= 5 3 4))

;; mono-ops
(maca (new (|Number|)))
(maca (new -number))
(maca (typeof 5))

;; in
@@ -80,16 +82,16 @@
(var e 2)
(+ a b c d e)))

(maca (-> (a)
(alert a)
(-> (b)
(if (< b 3)
((var a (- 3 b))
(= b (expr a 5)))
((var a (- b 3))))
(var c (+ a 3))
(alert a b)
a)))
(maca (-/> (a)
(alert a)
(-/> (b)
(if (< b 3)
((var a (- 3 b))
(= b (expr a 5)))
((var a (- b 3))))
(var c (+ a 3))
(alert a b)
a)))

;; procedure function: returns undefined
(maca (-/> (a b c)
@@ -1,6 +1,8 @@

(in-package :maca)

;; test whether a list is unique

(defun uniquify (lst &key (test #'eq))
(labels ((rec (unique rest)
(if rest
@@ -23,6 +25,8 @@
(defun uniquep (lst &key (test #'eq))
(not (not-uniquep lst :test test)))



(defun atom-or-op (arg)
(or (atom arg) (atom (car arg))))

@@ -38,6 +42,8 @@
arg))




(defmacro with-set-temp (env scripts &body body)
(let ((binds (mapcar #'(lambda (script) (cons script (gensym))) scripts)))
`(let ,(mapcar #'cdr binds)
@@ -70,8 +76,8 @@
args)
,@body))


(defun insert-initialization (cl &rest var-val-plist)
"helper function for inserting initialization of variables."
(labels ((rec (plist)
(let ((var (car plist))
(val (cadr plist)))
@@ -110,3 +116,8 @@
(appendf +variables+ ,var-list)
`(glue ,@,compiled-args
,,@body)))))

(defun env-args (env)
(loop for cl in env collect (closure-variables cl)))
(defun env-indents (env)
(loop for cl in env sum (closure-indentation cl)))