1a481a69 |
(defpackage :curly-bracens
|
4c7d5ddf |
(:use :cl :named-readtables)
(:shadow :if :function :return))
|
1a481a69 |
(in-package :curly-bracens)
(defmacro if (condition then &optional (else-sym nil e-s-p) (else nil e-p))
(assert (and e-s-p e-p (eq else-sym 'else)))
`(cl:if ,condition
,then
,else))
|
4c7d5ddf |
(defmacro function (&body info)
(cl:if (symbolp (car info))
(destructuring-bind (name args &rest body) info
`(defun ,name ,args
,@body))
(destructuring-bind (args &rest body) info
`(lambda ,args
,@body))))
|
1a481a69 |
(defun read-progn (stream char)
(declare (ignore char))
(cons 'progn
(read-delimited-list #\} stream t)))
(defreadtable :curly-bracens
(:merge :standard)
(:macro-char #\} (lambda (&rest r) (declare (ignore r))) nil)
(:macro-char #\{ 'read-progn nil))
|
4c7d5ddf |
(defvar return 'return)
(function do_thing () {
return 1;
|
d5bfd1f1 |
});
|
4c7d5ddf |
(function () {
return 1;
|
d5bfd1f1 |
});
|
4c7d5ddf |
|
1a481a69 |
(if (> 3 1) {
(princ :hi)
(terpri)
(+ 2 3)
} else {
(princ :bye)
(terpri)
(+ 4 5)
})
|