From: "Chad R. Meiners" <crmeiners@hotmail.com>
Subject: Re: What evil would happen?
Date: Sun, 13 Jul 2003 20:06:30 -0400
Date: 2003-07-13T20:06:30-04:00 [thread overview]
Message-ID: <bess80$2d3v$1@msunews.cl.msu.edu> (raw)
In-Reply-To: 5ad0dd8a.0307131407.4955979e@posting.google.com
"Wojtek Narczynski" <wojtek@power.com.pl> wrote in message
news:5ad0dd8a.0307131407.4955979e@posting.google.com...
> "Chad R. Meiners" <crmeiners@hotmail.com> wrote in message
news:<bes4uv$1o29$1@msunews.cl.msu.edu>...
>
> > > "Functions" with side effects can only inject their side effect into
> > > where they have been hardcoded to.
> > This is wrong. Function have the capability to randomly introduce side
> > effects just like any other section of code.
>
> Have you read the whole thread?
I read all the root nodes, but I was responding to the single sentence which
is incorrect.
>
> > In my experience, functions are more useful
> > when they are pure. Sure there are times when a function cannot be
pure,
> > but sub-routine with a side-effect should be made a procedure in most
cases.
>
> I agree that functions should be pure. But procedures cannot return an
> unconstrained value. Again, this is what this thread is about.
However, procedure's can return parse trees.
> > I suggest that if you want to return composites from
> > functions you should return a record type.
> >
> > type Composite(StringSize : Natural) is record
> > User_Name : String(1..StringSize);
> > Result : Boolean;
> > end record;
> >
> > function Parse_User_Name(Item : String) return Composite;
> >
> > However, the following might also be a suitable procedure for the task
>
> Yes, this works, but causes code explosion, and memory copying (when
> gathering all the parsed pieces together). This is what you can neatly
> do in SML with tagged union types, by the way :-)
You are prematurely trying to optimize. Furthermore, returning records
does not automatically cause code explosion or extra memory copying. I have
used similar techniques when writing recursive decent parsers. The code is
both readable and concise (it is also fast enough for any test I cared to
give it). If you are going to write any sort of language parser, I
recommended browsing the source for GNAT's parser. It is probably overkill
for what you want but you can get a lot of good ideas from it. The way it
represents tokens is inspired. ;-)
-CRM
next prev parent reply other threads:[~2003-07-14 0:06 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-11 19:51 What evil would happen? Wojtek Narczynski
2003-07-11 20:07 ` Hyman Rosen
2003-07-12 12:30 ` Wojtek Narczynski
2003-07-12 17:17 ` Martin Dowie
2003-07-13 1:46 ` Hyman Rosen
2003-07-13 15:29 ` Wojtek Narczynski
2003-07-11 20:08 ` chris.danx
2003-07-12 4:31 ` Nick Roberts
2003-07-12 12:26 ` Wojtek Narczynski
2003-07-12 12:39 ` Preben Randhol
2003-07-12 13:11 ` Larry Kilgallen
2003-07-12 13:22 ` Preben Randhol
2003-07-12 19:04 ` Larry Kilgallen
2003-07-14 8:43 ` Preben Randhol
2003-07-14 10:32 ` Larry Kilgallen
2003-07-14 11:05 ` Preben Randhol
2003-07-14 11:31 ` Larry Kilgallen
[not found] ` <slrnbh53ir.48d.Organization: LJK Software <zSeTW0M3CTPU@eisner.encompasserve.org>
2003-07-14 17:31 ` Wojtek Narczynski
2003-07-13 15:26 ` Wojtek Narczynski
2003-07-13 17:28 ` Chad R. Meiners
2003-07-13 22:35 ` Wojtek Narczynski
2003-07-14 0:06 ` Chad R. Meiners [this message]
2003-07-13 22:36 ` Wojtek Narczynski
2003-07-14 3:01 ` Hyman Rosen
2003-07-14 4:41 ` Chad R. Meiners
2003-07-14 23:32 ` [ot] languages & academia was " chris.danx
2003-07-14 9:09 ` Dmitry A. Kazakov
2003-07-14 17:44 ` Chad R. Meiners
2003-07-14 18:15 ` tmoran
2003-07-15 8:06 ` Dmitry A. Kazakov
2003-07-11 21:26 ` Robert I. Eachus
2003-07-12 12:38 ` Wojtek Narczynski
2003-07-16 0:07 ` Robert I. Eachus
2003-07-16 8:11 ` Preben Randhol
2003-07-14 18:52 ` Randy Brukardt
2003-07-14 20:12 ` Hyman Rosen
2003-07-15 2:32 ` Alexander Kopilovitch
2003-07-15 8:19 ` Wojtek Narczynski
2003-07-15 17:33 ` Randy Brukardt
2003-07-16 0:22 ` Robert I. Eachus
2003-07-16 8:36 ` Dmitry A. Kazakov
2003-07-15 5:16 ` Kenneth Almquist
2003-07-15 11:31 ` Wojtek Narczynski
2003-07-18 8:23 ` Wojtek Narczynski
2003-07-18 14:45 ` Hyman Rosen
2003-07-19 0:55 ` Robert I. Eachus
-- strict thread matches above, loose matches on Subject: below --
2003-07-11 23:04 Beard, Frank Randolph CIV
2003-07-12 12:46 ` Wojtek Narczynski
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox