On 12/31/05, Anthony Borla <[EMAIL PROTECTED]> wrote:
>
> Greetings,
>
> Thank you all for the help previously given. I have a couple more quick
> questions:
>
> * Is there a precedence problem with some arithmetic operators ?

Yes. there is no precedence. 1 + 2 * 50 =3D 150, not 101 .
Not really a problem, but must be known.

> * Is last call optimisation supported ?

No.

>
> To illustrate the first problem, note the two versions of the function
> below:
>
> hsumiA: func [n /local sum] [
>   sum: 0.0
>   repeat i n [sum: sum + 1.0 / i]
>   sum
> ]
>
> hsumiB: func [n /local sum] [
>   sum: 0.0
>   repeat i n [sum: sum + (1.0 / i)]
>   sum
> ]
>
> Calling each with the same argument results in different return values:
>
>     hsumiA 5          =3D=3D> 0.28333333333333
>     hsumiB 5          =3D=3D> 2.28333333333333
>
> even though the precedence of the aritmetic division / operator is higher
> than the addition operator, so the grouping used here:
>
>      sum + (1.0 / i)
>
> would ordinarily be redundant, and be identical to:
>
>      sum + 1.0 / i
>
> Clearly, though, there *is* a difference as evidenced by the different
> return values. Would anyone care to clarify [or have I again missed
> something obvious :)] ?
>
> The other query concerns last call optimisation. Tail recursive versions =
of
> the earlier functions:
>
>     hsumA: func [n a] [either n =3D=3D 0 [a][hsum n - 1 a + 1.0 / n]]
>
>     hsumB: func [n a] [either n =3D=3D 0 [a][hsum n - 1 a + (1.0 / n)]]
>
> both fail when an argument of about 8000 is passed:
>
>     hsumB 8000 0.0
>
>     ** Internal Error: Stack overflow
>     ** Where: hsumB
>     ** Near: hsumB n - 1 a
>
> So my query is:
>
> * Have I correctly implemented tail recursive versions of the
>    above functions, and, if so,
>
> * Does this mean that last call optimisation is not implemented,
>    and that iterative rather tail recursive algorithms should be
>    preferred ?
>
> Cheers,
>
> Anthony Borla
>
> P.S.
>
> Is there a way of preventing the screen from being cleared when a result =
is
> printed to the console ? Whilst this doesn't occur when working
> interactively, it is an annoyance when used in shell scripts.
>
> --
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
>
>


--
-Volker

"Any problem in computer science can be solved with another layer of
indirection. But that usually will create another problem." David
Wheeler
-- 
To unsubscribe from the list, just send an email to 
lists at rebol.com with unsubscribe as the subject.

Reply via email to