[Date Prev][Date Next][Subject Prev][Subject Next][ Date Index][ Subject Index]

Re: v3 xpl buffer



≪	One expression that I've always wished could be manufactured by
concatenation (but can't) is the GoLabel (GL) statement. To take a v4
example, suppose S/G 01 can have three possible values: "red", "blue" and
"green"; you want execution to branch to a different LaBel depending on
the content of 01. How convenient if this were just a matter of

	[SX01,"[GL"+[IS01]+"]"[PV01];*;
	;*;
	[LBred][PRHow embarrassing!][EX]
	[LBblue][PRHow depressing!][EX]
	[LBgreen][PRHow charming!][EX]

[...] You're relegated to a prolilx series of IF's ... EndIf's. ≫

Carl--Mmm, I dunno. !.LIB's proc {is33} wouldn't be all *that*
obnoxious in that situation:

	{sv13,GREENRED}{sx12,{is01}}{pv33}{lb

	}{if{pv13}>0}{PRHow embarrassing!}{ex}
	{ei}{if{pv13}<0}{PRHow depressing!}{ex}
	{ei}{PRHow charming!}{ex}

I lean heavily on {is33} in a multitude of circumstances.
When {is12} is empty, {is33} evaluates each char input on the fly:
	{LBcv}{sv12,}{sv13,YSNAQ}{pv33}{if{pv13}<0}{GLcv}{ei}

Proc {is33} sorta joins C's getch and strchr:
	{sv33,{lbG}{if@siz({is12})<1!{is12}e{is33}>85}{sx12,{rc}}{glG}
	{ei}{sx13,@upr({is12})e{is13}}AR XH SI CI NI NO }

But yeah, xpl is imperfect and the string literal technique *is* demanding
with v3's arduous concatenation, but it solves so many problems it's
worth the hassle. When I was starting to push v3.52 xpl to see what
undocumented stuff it would do, I tried a lot of code that resembled
legal v4 concatenations--fruitlessly. I *still* can't believe v3 strings
must be assigned to variables, especially if some va$s needn't be. ...

Incidentally, proc {is34}'s lay-off of {is10} to {is44} was an
afterthought to enable nesting. Reexamining the code, I see that
the way {is34} was called needed editing--

	{lb_MAKE_FOR}{sv44,>0}{sv84,-1}{pv34}{lb
	}{lb_FOR}{sv54,BF {gt44}[o|]}{sv84,1}{pv44}

--which lets proc {is34}'s size be reduced somewhat:

	{sv34,{sv10,if{pv84}}{sv12,{pv54}}{sv54,sx84,{pv84}}{lb
	}{sx12,{is75}+{is74}+{is10}+{is44}+{is75}+{is12}+{is74}+{is54}+{is84}}{lb
	}{sv10,lb4}{sv44,gl4}{sv54,ei}{lb
	}{sx12,{is10}+{is12}+{is75}+{is74}+{is44}+{is75}+{is74}+{is54}}{lb
	}{pv39}{sx44,{is10}}{sv10,}NO }

============================= adpFisher  nyc