[Openmcl-devel] Poll: what do you think of binding-block?

Lennart Staflin lstaflin at gmail.com
Sun Feb 10 09:25:33 UTC 2008


On Feb 10, 2008 2:34 AM, Ron Garret <ron at awun.net> wrote:
> In the context of a debate over Paul Graham's new Arc language I wrote
> a macro called binding-block or BB for short.  The intent of the macro
> was to illustrate how the relentless pursuit of brevity would lead to
> some really perverse looking code.  But now, ironically, I've actually
> found binding-block kind of growing on me.  It's basically a keyword-
> based replacement for a bunch of binding constructs (LET, MULTIPLE-
> VALUE-BIND, DESTRUCTURING-BIND, and most WITH-XXX forms) kinda-sorta
> like LOOP is a keyword-based replacement for DO, DOTIMES, MAP, etc.
> The syntax is:
>
> (bb
>   [var form |
>    :mv (var1 var2 ...) form |
>    :db pattern form |
>    :with spec |
>    form]*
>    [result]
> )
>

I've experimented with something similar (but with more parentheses):

(nest
  (:var x 12)
  (:fn foo (n) (+ n 12))
  (:alias y (1+ x))
  (list x (foo x) y))

becomes

(LET ((X 12))
  (FLET ((FOO (N) (+ N 12)))
    (SYMBOL-MACROLET ((Y (1+ X)))
      (LIST X (FOO X) Y))))

I have a project where I use this and several other macros
extensively. If I ever am going to publish that project, I will do a
review of the macros I use to see if they really make the code better.
I think you have to use is for a while to give it a fair try.

-- 
//Lennart Staflin



More information about the Openmcl-devel mailing list