Hi Tomas, probably this discussion gets too noisy for most readers of this list (if there is anybody still following ;), so I'd like to keep it short.
> The issue of declaring the variables is something else, I think. If I > want to save/load the environments or send them over the wire, then they > must be first class environments no matter if I declare the variables or > not, mustn't they? Yes. Or some other kind of variable-value association. > > In "lib/form.l" in PicoLisp, the body to 'job' is the huge body of the > > form generating code. The application level code isn't even loaded at > > that time, and is different for each form or dialog invoked. > > I don't understand this argument. If the application level code isn't > even loaded, then there is nothing to be macroexpanded and compiled;-) I see. Now I understand part of the problem! It seems we are talking about different things. For me, "lib/form.l" and the stuff in "myApp/gui.l" are (as I said) _libraries_. And a set of macros is not a library for me; this may be different in the view of a CL programmer. For me, a library is a set of pre-defined (or pre-compiled) functions, ready to be called at runtime. > Looking through the form.l code, it seems to me that the UI model could > be significantly simplified. For example, are the hidden fields > necessary? Is it necessary to pass binding values in url? I don't IIRC, yes. Why would I have otherwise gone through the trouble implementing them? > think so because all that information that is passed between http > requests via query parameters in those cases is already known to the > server. No, it is not. These hidden values and URL parameters are needed to identify which version of which form was posted: 1. There may be several forms and dialogs on the page 2. Each form has a history of previous states, which can be re-POSTed any time when the user goes back via the browser's "back" button, or re-visits a form by switching back from a different browser tab. > Also note that macroexpansion doesn't necessary mean "code explosion", > the expanded sexp gets compiled, possibly to a very efficient code. OK, right. Not really an "explosion", but it means that a substantial part of (the equivalent of) "lib/xhtml.l" and "lib/form.l" would be expanded into every page that is loaded. Cheers, - Alex -- UNSUBSCRIBE: mailto:firstname.lastname@example.org?subject=Unsubscribe