.so tmac.ilib .TH PDCO 2 "The University of Arizona \- 8/16/84" .SH NAME pdco \- programmer-defined control operations .SH DESCRIPTION These procedures are taken mainly from TR 82-8, which describes how co-expressions can be used to model the built-in control structures of Icon and also provide new ones. Some procedures have been corrected or improved and there are additions. .SH SYNOPSIS .nf .ta 2.0i \*MAlt\^{e1,\*be2}\fR models \*Me1 | e2\fR \*MColseq\^{e1,\*be2, \*(El}\fR produces results of \*Me1\fR, \*Me2\fR, \*(El alternately \*MComseq\^{e1,\*be2}\fR compares result sequences of \*Me1\fR and \*Me2\fR \*MCond\^{e1,\*be2, \*(El}\fR generalized Lisp conditional \*MEvery\^{e1,\*be2}\fR models \*Mevery e1 do e2\fR \*MGalt\^{e1,\*be2, \*(El}\fR generalized alternation: \*Me1 | e2 | \*(El\fR \*MLcond\^{e1,\*be2, \*(El}\fR Lisp conditional \*MLimit\^{e1,\*be2}\fR models \*Me1 \e e2\fR \*MRanseq\^{e1,\*be2, \*(El}\fR produces results of \*Me1\fR, \*Me2\fR, \*(El at random \*MRepalt\^{e}\fR models \*M|e\fR \*MResume\^{e1,\*be2,\*be3}\fR models \*Mevery e1 \e e2 do e3\fR \*MSelect\^{e1,\*be2}\fR produces results from \*Me1\fR by position according to \*Me2\fR .SH BUGS AND DEFICIENCIES Because of the handling of the scope of local identifiers in co-expressions, expressions in programmer-defined control operations cannot communicate through local identifiers. The results produced by programmer-defined control operations are always dereferenced. Some constructions, such as \*Mbreak\fR and \*Mreturn\fR, cannot be used in arguments to programmer-defined control operations. See TR 82-8 for details of these problems. .SH REQUIREMENTS \fIPdco\fR requires the experimental extensions in Version 5.9 of Icon. .SH SEE ALSO pdae(2) .PP .Pd .PP .Ex .SH AUTHORS Ralph E. Griswold and Michael Novak