Re: EUPHORIA Digest - 20 Jun 1998 to 21 Jun 1998 (#1998-35)
- Posted by Andy Kurnia <akur at DELOS.COM> Jun 22, 1998
- 521 views
At 12:00 AM 6/22/98 -0400, Automatic digest processor wrote: >Date: Sun, 21 Jun 1998 08:40:42 -0400 >From: Irv <mountains at MINDSPRING.COM> >Subject: Re: EUPHORIA Digest - 19 Jun 1998 to 20 Jun 1998 (#1998-34) > >At 05:03 PM 6/21/98 +0700, Andy Kurnia wrote: >>If you can suggest me, *without paying,* how to get Euphoria to increase >>the 300 line limit, I will stop complaining. > >Hmmmm...isn't RDS offering credits toward a free copy to people who write >useful stuff? That would be one "free" way to avoid the 300 limit. >All you need is 50 or 60 votes. Does that offer apply to non-registered Euphoria programmers? I see no "no" in %EUDIR%\DOC\WEB.DOC, but I see no "yes" either. Confirmations, RDS? >On the other hand, I wrote my GUI database and game(s) without using >a registered version. It isn't that hard; the Euphoria debugger and trace >work just fine - better than most commercial compilers I have used. GREAT! Teach me how you did that everytime. (are you registered?) >Date: Sun, 21 Jun 1998 09:25:39 -0400 >From: Alan Tu <ATU5713 at COMPUSERVE.COM> -- >Date: Sun, 21 Jun 1998 11:18:22 -0400 >From: Irv <irv at ELLIJAY.COM> -- >Date: Mon, 22 Jun 1998 10:24:50 -0700 >From: Monty King <boot_me at GEOCITIES.COM> -- >Date: Sun, 21 Jun 1998 15:49:23 -0300 >From: Daniel Berstein <daber at PAIR.COM> >Subject: Re: ex bloatware? Thanks for your replies, but most of you did not understand as well as Rob Craig did: "make a stripped down ex.exe for binding". >Date: Sun, 21 Jun 1998 16:23:06 -0400 >From: Robert Craig <rds at EMAIL.MSN.COM> >Subject: Re: ex bloatware? > >> make a stripped down ex.exe for binding. > >I once estimated I might save 20K or so by eliminating >the debug/trace code in bound executables. I don't think >it's worth it. It makes life more complicated for me and >users. It means extra testing, extra possibilities of bugs >etc. It would mean a larger EUPHOR20.ZIP file. I'd have >to build and test at least 6 >different versions of Euphoria for each release: >ex PD, ex Complete, ex Stripped Down, plus 3 more >for Windows, and 3 more for any new platform. No thanks. I would volunteer testing that. You can do like probably you have done for complete/PD... #ifndef STRIPPEDDOWN void do_activate_trace(void) { open_editor(); ... } #endif ... else if (command == ACTIVATE_TRACE) #ifndef STRIPPEDDOWN do_activate_trace(); #else ; #endif ... > * it's rather difficult to add to the current Euphoria parser make an internal function func(expected, {values}) that will evaluate values left to right, turning nonzero to 1, and once expected (either 0 or 1) is found it does not evaluate more elements, and immediately return that last 0-or-1 value. && is func(0, {values}) || is func(1, {values}) > * I don't really want to introduce 2 new keywords that > have almost the same meaning as AND and OR. > This is supposed to be a simple language. but you do want to keep that badly colored trace viewer > * Euphoria is not like C. Euphoria has boolean expressions > where the result can be an atom *or a sequence*, and you && and || are supposed to evaluate only atoms, and will bomb out with an error message if anything inside is a sequence. and and or are supposed to evaluate objects, be they atoms or sequences. > But what about: > x = 1 or expression with: x = 1 || expression if expression is atom then if it is 0 then return 0 else return 1 else error >Bottom line: I'm not planning to proceed with this. What about ?: ? >but I haven't done it, because I think people more often >want to read up to some delimitter, rather than simply Why not allow changing that delimiter (not always \n, e.g. up to EOF)? In perl you can say: undef $/; >Date: Sun, 21 Jun 1998 16:22:27 -0400 >From: Arthur Adamson <euclid at ISOC.NET> >Subject: Edom 2.02 > >Disk-read time for -----get(...) : 3.03 Sec >Disk-read time for edo_save(...) : .65 Sec get compared to edo_*save*??? >Date: Sun, 21 Jun 1998 22:44:16 +0200 >From: Ralf Nieuwenhuijsen <nieuwen at XS4ALL.NL> >Subject: Re: EUPHORIA Digest - 19 Jun 1998 to 20 Jun 1998 (#1998-34) > >>poor guy like me. Registered users (including Ralf) please keep your mailer > >I'm not registered You're NOT!? Surprising >So I could write those large libraries with a unregistered version. Great, Ralf, I need to learn from you (and Irv) how! >2) Let a type function turn tracing on instead of return FALSE and make your >program crash like with an '300 statements limit' I don't understand this, Ralf, please explain. >And off course I push Euphoria down every programmers throat that hasn't >heard of it in newsgroups, colleges, teachers, etc. So I maybe a introduced >a few new people to Euphoria I do that too , but most people I introduced it to has either a Perl background (in which case all of them rejects Euphoria, saying "Perl can already do lots of things, why bother?", to which I must agree), or BASIC (in which case they simply say, "what's this sequence thingy, I don't understand at all!!! What should I do to 'DIM'? ..." and I couldn't explain it that well). A side note: these BASIC believers do not have internet access and do not subscribe to EUPHORIA list. >Date: Mon, 22 Jun 1998 10:04:21 +1200 >From: "BABOR, JIRI" <J.Babor at GNS.CRI.NZ> >Subject: Re: ex bloatware > >Robert Craig wrote: >> * if I change AND and OR to operate in the short-circuit >> manner, existing programs will break. I had no trouble >> finding at least 3 programs on the Euphoria Web site >> that would break if short-circuit were used (since function >> calls might be skipped). > >Small price to pay. Please, break them! Jiri Hmm, that would be rather cruel (especially if those are Ralf's programs, is he 16 or 17 now, I forget), but I would really welcome a left-to-right &&, left-to-right ||, and perhaps ?: that only evaluates the condition and the selected operand. Actually, &&, ||, and ?: canNOT be programmed in Euphoria easily. However, if we had the short-circuit operators INSTEAD, I can write the complete-evaluation operators easily... for: x and y --> you use: (x * y) != 0 for: x or y ---> you use: ((x != 0) + (y != 0)) != 0 for: x ? y : z (evaluating all 3) --> use: function iif(integer cond, object ift, object iff) if cond then return ift end if return iff end function >Date: Sun, 21 Jun 1998 18:47:28 -0400 >From: Robert B Pilkington <bpilkington at JUNO.COM> >Subject: Re: ex bloatware > >Hmmm, a new keyword, "with short_circut", that would default to "without >short_circut"?? Unless a "with short_circut" is encountered, the >short_circuts are automatically off. Agreed, except: 1. that it's short_circuit -- ends with "cuit" not "cut" 2. I don't think it would be easy for Rob to implement. 3. that it'd be hard to determine if a particular expession is with or without short_circuit. >As for the ~180k size with EX.EXE's bound programs, I think that for >large programs, the size is very acceptable, but for a small program (say >binding a modified BUZZ.EX for a friend), the size is a bit big. All that >means is that I need to give my friend EX.EXE and shroud all my files to >give him, and include .BAT files to execute the stuff. Right, it is very acceptable for an IE clone but not a mailer. (Alan, do you read this?) I don't feel like sending ex.exe with a data file and a .bat file though, it's unprofessional. >Date: Sun, 21 Jun 1998 21:51:15 -0400 >From: Irv <irv at ELLIJAY.COM> >Subject: Re: ex bloatware > >Borland's Turbo-- languages have had this ability to "short circuit" boolean >evalsfor a long time. And I haven't used it, ever, as far as I can remember. Note that in Borland, short-circuit IS THE DEFAULT. As I have demonstrated above, cloning a complete evaluation would be easy and won't cost too much out of the 300 statements. One joke: if you have Borland or Turbo Pascal, try the following programs: SHORT.PAS {$B-} function a : boolean; begin write('left'); a := true end; function b : boolean; begin write(' to '); b := true end; function c : boolean; begin write('right'); c := true end; begin if a and b and c then writeln end. COMPLETE.PAS {$B+} function a : boolean; begin write('left'); a := true end; function b : boolean; begin write(' to '); b := true end; function c : boolean; begin write('right'); c := true end; begin if a and b and c then writeln end. They not only differ in the compiler setting, but they also differ in OUTPUT! Try it, it's a Borland (now Inprise)'s undocumented feature