What it is

Bind extends the idea of of let and destructing to provide a uniform syntax for all your accessor needs. It combines let, destructuring-bind, with-slots, with-accessors, structure editing, property or association-lists, and multiple-value-bind and a whole lot more into a single form. The user guide has all the details but here is example to whet your appetite:

(bind ((a 2)  
       ((b &rest args &key (c 2) &allow-other-keys) '(:a :c 5 :d 10 :e 54))  
       ((:values d e) (truncate 4.5)))  
  (list a b c d e args))  
==> (2 :A 5 4 0.5 (:C 5 :D 10 :E 54)) 

Bind is especially handy when you have more than one layer of multiple-value-bind or destructuring-bind. Since bind is a single form, you don't end up too far off to the right in editor land.

Bind is released under the MIT license.

Mailing Lists

Use the developer mailing list for any questions or comments regarding bind.

Where is it

metabang.com is switching from darcs to git for source control; the current metabang-bind repository is on github and you can clone it using:

git clone git://github.com/gwkkwg/metabang-bind 

metabang-bind is also ASDF installable. Its CLiki home is right where you'd expect.

There's also a handy gzipped tar file.

What is happening

10 April 2010 - moved to github; added flet support

28 May 2009 - added :structure/rw binding form; updated webpage to link to the user's guide

1 Dec 2007 - Added support for array destructuring (Thanks to Tamas Papp for the idea)

15 Nov 2007 - New user guide; bind handles structures and property lists and is now extensible!

13 Nov 2005 - Initial webpage n' stuff.