12345678910111213141516171819202122232425262728293031 |
- module where; % Support for a where construct.
- % Author: Anthony C. Hearn.
- % Copyright (c) 1987 The RAND Corporation. All rights reserved.
- % global '(fixedpreclis!*);
- symbolic procedure formwhere(u,vars,mode);
- begin scalar expn,equivs,y,z;
- expn := cadr u;
- equivs := remcomma caddr u;
- if not(mode eq 'symbolic)
- then return formc(list('whereexp,'list . equivs,expn),vars,mode);
- for each j in equivs do
- if not atom j and car j memq '(equal setq)
- then <<y := caddr j . y; z := cadr j . z>>
- else rerror(rlisp,17,list(j,"invalid in WHERE statement"));
- return formc(list('lambda,reversip z,expn) . reversip y,vars,mode)
- end;
- put('where,'formfn,'formwhere);
- % fixedpreclis!* := 'where . fixedpreclis!*; % Where has special place.
- % mkprec();
- endmodule;
- end;
|