The with-solved-problem macro shows how (in this case, I think termed "unhygienic") Lisp macros allow fancy stuff with the code-is-data approach.<p>The first argument seems to be a normal Lisp expression, with no special syntax, and the second argument has the solution variable and all the variables mentioned in the expression bound to (the solution object, the values of the variables in the solution it found).<p>This approach is obviously available for everything. You can just use fully-flexible S-Expressions as essentially function arguments, <i>and the function can modify the variables / identifiers in scope during execution of it's arguments</i>.<p>It makes me want to do more with Racket again...
Another recent computation library for Common Lisp: <a href="https://github.com/numcl/numcl" rel="nofollow">https://github.com/numcl/numcl</a>