[REBOL] Re: Antwort: Re: WYSIWYG programming
From: joel:neely:fedex at: 30-Oct-2000 16:45
Hi, Holger,
I'm skipping your interesting comments on vNL and self-referential
code for the purpose of this post (in interest of brevity).
I must say, in passing, that I found them quite interesting and
worthy of careful reading and thought.
[rebol-bounce--rebol--com] wrote: [in a different order...]
> I don't disagree with you that there may very well inconsistencies in
> REBOL (and if so, we need to think about resolving them). I just don't
> think that the example you gave illustrates one such case.
> No. We cannot compare logic! values by magnitude because no ordering
> has been defined for the logic! value domain. We CAN compare logic!
> values for (in)equality.
Actually, REBOL *has already* defined such an ordering. Consider
>> sort reduce [on off no yes true false]
== [false false false true true true]
Clearly SORT thinks that FALSE < TRUE. Isn't it reasonable to ask that
< <= > and >= to be allowed to agree with SORT?
> You are implying that whenever there exists a conversion between two
> data types, and for both of them an ordering has been defined, that
> the orderings of both data types are equivalent, i.e. the relative
> position of any two items should remain the same after the conversion.
>
> This assumption is, from experience, not always true. For instance
> consider the domains "signed integer" and "unsigned integer", of
> equal bit length, in C ("int" and "unsigned int" for example):
A few observations in response:
1) Mistakes in the design of C be on the heads of its designers! Just
because they made some bad choices doesn't mean REBOL has to. ;-)
2) Typecasting a bit pattern to reinterpret the bits is not the same
as a true conversion, in which there is a semantic identification
of the actual values. Once we start playing low-level bit-pattern
games, we can come up with all sorts of oddities. One of the virtues
of REBOL, IMHO, is that it is a high-level language that keeps us out
of the bit-swamp.
3) I didn't say "whenever". Any of us can easily define mappings in
which the concepts of order change from one interpretation to the
other. For instance 1 < 2 < 12, but "1" < "12" < "2". However,
in such cases,
3a) There are usually multiple ways to do the conversion, depending
on the actual task at hand -- one still can obtain 1 < 2 < 12
and " 1" < " 2" < "12" by choosing to use a conversion that
DOES retain order.
3b) The very concept of ordering may be application dependent, or
may be a compromise of other forces. The "asciibetical order"
commonly used for ordering strings works well for words in a
dictionary, but poorly for alphabetizing street addresses.
REBOL doesn't supply multiple ways to convert between integer! and
logic! data, nor is it obvious why such would be needed.
-jn-
--
; Joel Neely [joel--neely--fedex--com] 901-263-4460 38017/HKA/9677
REBOL [] do [ do func [s] [ foreach [a b] s [prin b] ] sort/skip
do function [s] [t] [ t: "" foreach [a b] s [repend t [b a]] t ] {
| e s m!zauafBpcvekexEohthjJakwLrngohOqrlryRnsctdtiub} 2 ]