[REBOL] Ifs Re:(3)
From: joel:neely:fedex at: 12-Oct-2000 7:27
[lmecir--geocities--com] wrote:
> Hi Joel,
>
> I am not glad, that I must disappoint you, [...]
>
Not at all! It's just that I, being a Bear of Small Brain, find it
difficult to give up. I'm very appreciative of the feedback!
I've forgotten the source, but recall the saying, "In science, a
successful experiment teaches nothing, as only the expected result
is obtained. One learns only when an experiment fails, providing a
challenge for new thought."
Thanks for the excellent teaching!
> but see the following example:
>
> a: 1
> b: to paren! [to paren! [to paren! [to paren! [a: 0 - a]]]]
> ifs-for-dummies b [negative: ["Negative"] zero: ["Zero"] positive:
> ["Positive"]]
> == "Zero"
>
> I think, you should read Exception #5 for Word Evaluation of my
> Rebol/Core User's Guide Comments once again [...]
>
Have done.
> and hope, that this will be interesting even for others...
>
I also.
Trying yet again, (I'm running the risk of keeping two distinct issues
entangled here -- the get-to-the-bottom-of-a-strange-selector puzzle,
and the object-for-named-parameters gimmick)...
unravel: func [[throw] exp /local val] [
val: exp
while [not any[ number? val char? val money? val time? val]]
[
val: do val ]
val ]
signed-choice: make object! [
positive: []
negative: []
zero: []
selector: 0
compute: func [[throw] selexpr] [
selector: unravel selexpr
either positive? selector [
do positive
][
either negative? selector [
do negative
][
do zero
] ] ] ]
ifs-for-dummies-who-play-with-fire: func [
[throw] selexp conseq [block!] /local actor
][
actor: make signed-choice conseq
actor/compute selexp ]
After which I can conduct more experiments...
>> c: [{[{[{"-1"}]}]}]
== [{[{[{"-1"}]}]}]
>> ifs-for-dummies-who-play-with-fire c [
positive: ["+"] negative: ["-"] zero: ["0"]]
== "-"
>> c: [{[{[{"1"}]}]}]
== [{[{[{"1"}]}]}]
>> ifs-for-dummies-who-play-with-fire c [
positive: ["+"] negative: ["-"] zero: ["0"]]
== "+"
>> c: [{[{[{"2 - 2"}]}]}]
== [{[{[{"2 - 2"}]}]}]
>> ifs-for-dummies-who-play-with-fire c [
positive: ["+"] negative: ["-"] zero: ["0"]]
== "0"
>>
>
> I am afraid, that Signed-if-for-dummies may become a victim of the GC bug
> and similar issues, when used recursively...
>
I haven't had time to play with that issue, but will do so when I can.
Thanks again!
-jn-