git.fiddlerwoaroof.com
curly-braces.lisp
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)
 })