Rebol Tech, please answer. Two questions.
[1/36] from: rebol:keithdevens at: 11-Sep-2000 19:53
Hey list, sorry to be annoying. I've asked these two questions before, but
I've never really gotten an answer to them, and they're bugging me!
1. I'll just give an example.
blk: [11 22 33 44 55]
print skip blk 3
44 55
Why not (print skip 3 blk) instead of (print skip blk 3)? What I'm getting
at is that it seems like it would be easier to chain these things together
if the arguments were in a different order (block last). For instance:
>> blk: [1 2 3 4 5 6 7]
== [1 2 3 4 5 6 7]
>> elem: skip skip blk 2 3
== [6 7]
If you want to do nested skips, the 'skips keep piling up in the front and
the numbers of elements to skip keep on piling up in the back. It seems more
natural to me for it to be:
>> blk: [1 2 3 4 5 6 7]
== [1 2 3 4 5 6 7]
>> elem: skip 2 skip 3 blk
== [6 7]
Can any of the Rebol Tech guys explain why they made it this way? You guys
must have thought of this, and I'd be really interested to hear why you
chose against it. Pleeeese let me know!
2. The lack of associative arrays in Rebol has bugged me from the beginning.
Last time I e-mailed the list about it I got suggestions for emulating them
with blocks. Last night I thought that I could just use objects to do what I
want. obj/index is just as good to me as obj{index}. The only thing is that
I don't know of a way to add refinements to objects dynamically. Always
creating a new object from the old one when I want to add a refinement
doesn't appeal to me. I know RT must have made a conscious decision not to
include associative arrays in the language, I'm just wondering why. Blocks
supercede their functionality, etc. Please let me know. I'd be really
interested to hear the reasoning behind this.
Thank you very very much.
Keith
P.S. One of the things that could go in a Rebol FAQ in a section entitled
For People Coming From Other Languages
could be questions like the ones
I've asked above. I could imagine a question like: "I come from a Perl
background. I'm used to using hashes for everything. What do I do in Rebol?"
[2/36] from: al:bri:xtra at: 12-Sep-2000 13:12
Keith wrote:
> Why not (print skip 3 blk) instead of (print skip blk 3)?
Here's a 'skp function that does this as an alternative to 'skip.
>> skp: func [
[ {Returns the series forward or backward from the current position.}
[ offset [number!] "Can be positive, negative, or zero."
[ series [series! port!]
[ ][
[ skip series offset
[ ]
>> blk: [1 2 3 4 5 6 7]
== [1 2 3 4 5 6 7]
>> elem: skp 2 skp 3 blk
== [6 7]
As for why it's like this, if you compare it to 'pick:
pick blk 4
it's very similar to:
skip blk 4
So I suggest that it seemed natural to continue it with 'skip?
Andrew Martin
ICQ: 26227169
http://members.ncbi.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/
[3/36] from: rebol:keithdevens at: 11-Sep-2000 21:43
It's funny, I thought of writing functions like that too. The only thing is,
as you very appropriately point out, Rebol is very consistent in this. It's
not only 'skip that this applies to, but 'pick, 'select, 'find, etc. As far
as I know, every function that deals with a series, extending to words like
'insert and 'append, takes the series first, and then the modifier (whether
it's an index to return, something to append or insert, a value to select
on, a value to find, you get the idea).
The language was obviously designed with this as a conscious choice. I'm
dying to know what the reasoning was. Personally, and especially in light of
Rebol's desire to be similar to a natural language, I think it feels much
more natural to put the series last.
For examples:
English version:
append a value to a series:
Rebol version:
append 'value 'series
English version:
insert a value into a series:
Rebol version:
insert 'value 'series
English version:
find a value in a series
Rebol version:
find 'value 'series
and on and on.
Could it be possible that this way is more natural to me only because I'm a
native English speaker?
Keith
[4/36] from: allen:rebolforces at: 12-Sep-2000 12:06
Hi Keith,
If you want an answer from RT, you can send your question to feedback.
do http://www.rebol.com/feedback.r
And choose (2) General Question.
But in terms of skip. this may help.
To quote Jeff
The typical REBOL parameter arrangement is that which is operated
on followed by the things to operate on it with.
Once you are used to recognising this pattern, you may find that nested
skips are easy enough to read and use, as they are.
Cheers,
Allen K
[5/36] from: jeff:rebol at: 11-Sep-2000 18:05
Howdy, Kevin:
(REBOL also uses international date standards.)
> The language was obviously designed with this as a
> conscious choice. I'm dying to know what the reasoning
> was.
That's a Q. only Carl can really A. He's been figuring out
how REBOL should work for more than a decade and a half, so
that question is pretty deep in the philosophy. What you
say about deliberateness is true about most (but not all)
things in REBOL. Here's two of those kinds of questions I
know the "answer" to, but let's see if any one else has some
ideas:
Why is semicolon (;) the REBOL comment character?
Why are square brackets ([]) used for REBOL blocks?
What do the above reasons have in common?
> Could it be possible that this way is more natural to me
> only because I'm a native English speaker?
Holger would probably do [answer :your-question 'yes]
:-)
-jeff
[6/36] from: allen:rebolforces at: 12-Sep-2000 13:42
>Here's two of those kinds of questions I
> know the "answer" to, but let's see if any one else has some
> ideas:
>
> Why is semicolon (;) the REBOL comment character?
> Why are square brackets ([]) used for REBOL blocks?
> What do the above reasons have in common?
Oooh a quiz!!
No idea..But from a usability point of view, is it just a coincedence that
these chosen REBOL keys are all together for easy use of the right hand?
Only need a few keys to do most things on a REBOL keyboard
; ' []
shifted provides us with :"{}
all datatypes! are grouped along the top of the keyboard with the maths
operators too.
(But this doesn't hold true for all non US keyboard layouts though does it?)
Cheers,
Allen K
I'm left handed and this layout seems natural to me, is it the same for
right handers?.
[7/36] from: bobr:dprc at: 12-Sep-2000 0:34
both of these topics have been seen before. one of them recently.
At 07:53 PM 9/11/00 -0400, [rebol--keithdevens--com] wrote:
....<snip>
>The only thing is that
>I don't know of a way to add refinements to objects dynamically.
here is its X-selma number: 345023
aka http://rebol.org/userlist/archive/345/023.html
>Always
>creating a new object from the old one when I want to add a refinement
>doesn't appeal to me.
it bugs me too,
further it makes incorporation of that object into
some other(s) a chore to track
if it is linked in multiple places.
does anyone have an elegant/quick way
to see who refers to an object?
(IE who else has an == link to the same self' value?)
>P.S. One of the things that could go in a Rebol FAQ in a section entitled
>"For People Coming From Other Languages" could be questions like the ones
>I've asked above. X-selma number: 81447 with respect to folks (like
me) coming from other languages.
aka http://rebol.org/userlist/archive/81/447.html
>I could imagine a question like: "I come from a Perl
>background. I'm used to using hashes for everything. What do I do in Rebol?"
I want to invite you to start such a thread.
I have a personal filter set to
look for messages that have "How do I" in the
subject line so you will definately get my attention with those.
[and likely my 2cents too]
;# mailto: [bobr--dprc--net]
[8/36] from: rishi:picostar at: 11-Sep-2000 22:03
well...
I think the ";" is used as a comment so people who are comfortable with languages like
java, c, C++,
etc can still end statments with a semi-colon if they want to. the rebol interpreter
will just
ignore it.
ei.
print "hello";
ask "how do you do";
as for the brackets...[]... well when together, they look like blocks...don't they
take a look below
--[]
-[][]
[][][]
it looks like i stacked blocks on top of each other. My guess is carl chose [ and ] for
blocks
because it looks like a block when put together...
Rishi
[9/36] from: rishi:picostar at: 11-Sep-2000 22:08
shoot. just realized that another reason for the comment like that is because:
(;) looks like a person winking (sideways). you usually wink when you have a secret.
Code behind a
wink is secret to the interpreter!
cool.
my block theory still stands though...
(I'm sure all you rebol pioneers know all this stuff...)
Rishi
[10/36] from: rebol:techscribe at: 12-Sep-2000 1:12
Hi Keith,
you wrote:
>blk: [11 22 33 44 55]
>print skip blk 3
>44 55
>
>Why not (print skip 3 blk) instead of (print skip blk 3)?
My $0.02: Two related explanations. Because:
1. REBOL is a mind-mapping language.
2. Consistency makes REBOL easier to learn and to remember.
Somewhat longer explanations of what I mean follow:
1. skip 3 blk
skip 3 ...
Why 3? Because the element I'm interested in is in the third position.
It is? How do I know that? Because I know what block blk contains, and
therefore I know that the element is in some position in that block,
namely, in the third position.
You notice that I can only determine the appropriate skip distance, after
I've determined in which block I'm skipping around.
I already thought of block blk, when I set out to determine the correct
value for the skip distance. Therefore, let me do first things first, I
might as well type what's first on my minde, "blk", be done with it, and
then move on to think about the skip-distance, which is derived from
knowing that I'm skipping around in the block "blk".
In other words, REBOL enables me to program like I think. At the point in
time at which I choose 3 as the skip distance, I must already know that I
will be skipping in the block blk, otherwise I would have no way of of
determining how many elements to skip. So I first type what must be first
on my mind, blk, and then whatever is next, "3". It must be "next on my
mind" because to determine that 3 is the correct skip distance, I must
already know that I'm skipping in block blk. But I can know that I'm
skipping in block blk, because it contains the element I'm interested in,
before I determine where exactly the element is located in the block, i.e.
before I determine the correct skip distance.
skip blk 3
makes "thinking in REBOL" more natural, because it is more
similar to the way the mind works anyway. "skip 3 blk" separates thinking
about the problem from formulating it as REBOL code. In my mind blk must
have come first, because I figured out that the skip distance is 3 (skip
blk 3), but if REBOL's notation was "skip 3 blk", then in REBOL the
relative position of the skip distance and the block would be exactly
reversed, compared to how thinking works.
Take 2:
The short version: Two-argument functions are single-argument functions
with an additional argument.
Long version:
Observation:
You use the word print in your example (print skip ...). The print function
takes only one argument. This is also true for other functions, such as
ask, or form, for instance. One-argument functions are simpler than
two-argument functions.
Examples:
form blk
print blk
ask form blk
empty? blk
This is also true for all type-related functions:
type? blk
block? blk
I can prototype these examples by providing a pattern:
The pattern is:
1. First I answer the question "What am I doing?", and then
2. I answer the question "Who am I doing this to?"
Question: "What am I doing?"
Answer: "print"
Question: "Who am I doing this to?"
Answer: "blk"
Question: "What am I doing?"
Answer: "form"
Question: "Who am I doing this to?"
Answer: "blk"
We have a pattern.
Once the human mind has grown accustomed to a pattern, it's easier to
acquire new knowledge, by extending the known pattern. We want to add an
element (a second argument) to the existing single-argument-function
pattern. Where are we going to place this additional new element?
To answer this question we must ask, "Do there exist pattern derivation
rules that are more easily learned than other rules?" The answer in this
case is that "fewer rules" are more easily learned than "more rules".
Follow-up question: But what if I express several "more rules" in a single
fewer rules
rule, albeit a complex rule? The answer is that a complex
rule does not count as a "fewer" rule. A complex rule counts as much as the
number of its constituent elementary rules. A complex rule stands in a
similar structural relationship to elementary rules, like a molecule to the
atoms it is composed of. The molecule ways as much as the sum of the atoms
it is composed of. A complex rule counts as much as the number of
elementary rules it is composed of.
The pattern "skip 3 blk" compared to "print blk"
If we place the new, second argument between the function name and what
originally was the first argument ("Who are we doing it to?"), our
derivation consists of three rules:
1. Remove the first argument from its previous position;
2. Add a new element (the new argument) at the removed argument's position;
and
3. Add the previous first argument at its new second-argument position.
I can express rules 1 .. 3 in one complex rule: "Insert the new element
between the first and second elements of the old pattern". But this is not
an elementary rule. This is a complex rule. The complexity of this rule is
signalled by the words "Insert" and "between the first and second". To
determine the complexity of a derivation rule, we must formulate the rule
in terms of its rule "atoms", its constituting elementary rules. "Insert
... between the first and second" breaks down into the three elementary
rules listed above.
It's apparent that adding the new argument at the end of the
single-argument pattern is a much simpler derivation because it consists of
only one rule (and one none-rule:)
0. none-rule: Leave the single-argument pattern undisturbed.
1. new-rule: Add the new, third argument, behind the existing pattern.
To emphasize this pattern aspect, let's invent a new skip function, skip-one:
skip-one: func [series] [
skip series 1
]
Now we could continue to use the established pattern:
skip-one blk
Question: "What am I doing?"
Answer: "skip-one"
Question: "Who am I doing this to?"
Answer: "blk"
To skip 3 items:
skip-one skip-one skip-one blk
But we want to be more flexible. We want to skip any amount of elements in
a series, not just one. And we don't want to be forced to repeat the same
operation over and over again. That's simple, but exhausting. We must
provide a second argument, the skip-distance.
Yet we want to remain consistent, and keep things simple, by building on
the established pattern, namely, the pattern of single-argument functions.
To put it differently: Since everyone, who programs in REBOL will
occassionally use single-argument functions, we want to implement
two-argument functions to be as similar to single-argument functions as
possible. Like this you learn one thing, the pattern of single-argument
functions, and at the same time you have learned most of another thing:
two-argument functions.
Another aspect: Whenever we use single-argument or two-argument functions,
we are reinforcing a known pattern that is common to both functions. We
can, therefore, more easily remember the pattern of single-argument and
two-argument functions.
So we avoid rearranging the pattern, and instead we limit ourselves to
simply adding the new element to the end of the established pattern. We
retain the sequence of questions and answers, and add a third question
behind questions and answers we would be dealing with anyway, if we were
dealing with a single-argument function.
skip blk 3
The first two questions remain the same:
Question: "What am I doing?"
Answer: "skip"
Question: "Who am I doing this to?"
Answer: "blk"
New Question:
Question: "How much of it am I doing?"
Answer: "3"
Note that the first two questions and answers clarify the most important
aspects: What am I doing, and who am I doing it to. The third question adds
another important piece of information, but that information is derived
from the first two pieces of info.
Hope this helps,
;- Elan [ : - ) ]
author of REBOL: THE OFFICIAL GUIDE
REBOL Press: The Official Source for REBOL Books
http://www.REBOLpress.com
visit me at http://www.TechScribe.com
[11/36] from: jelinem1:nationwide at: 12-Sep-2000 8:59
Why is semicolon (;) the REBOL comment character?
*shrug* Because it's an easy key to type (find) on a keyboard?
Why are square brackets ([]) used for REBOL blocks?
[ ] IMO are more readable than ( ) (because they are bolder) or { }
(because the graphics are simpler).
What do the above reasons have in common?
NO SHIFT KEY! WOOHOO! This was extremely noticeable after I started
programming in Perl.
- Michael Jelinek
[12/36] from: jeff:rebol at: 12-Sep-2000 7:17
Howdy Bob:
> >Always creating a new object from the old one when I want
> >to add a refinement doesn't appeal to me.
<<quoted lines omitted: 4>>
> an object? (IE who else has an == link to the same self'
> value?)
Here's a way:
Every object has a block of referring objects and referred
to objects. When ever you link to an object, you add
yourself to that object's referring block. When ever you
unlink, you remove yourself from their referring block.
Etc..
a: make object! [referring: copy [] points-to: copy []]
b: make object! [
referring: none points-to: reduce ['a a]
append a/referring reduce ['b self]
]
link-obj: func ['from 'to /obj1 /obj2][
obj1: get from
obj2: get to
append obj2/referring reduce [from obj1]
append obj1/points-to reduce [to obj2]
]
unlink-obj: func ['from 'to][
remove/part find obj2/referring from 2
remove/part find obj1/points-to to 2
]
Now you can:
b/points-to/a/referring/b/points-to/a
etc...
So we're making a graph? Maybe start a "how do I represent
graphs in REBOL" thread? :)
By the way: The way we used the two blocks above is a
general mechanism for easily adding and removing refinements
to an object:
foo: make object! [
a:
b: none
x-refs: copy []
]
Let's add 'c:
append foo/x-refs [c 99] ;-- can also bind things into foo here
foo/x-refs/c
Removal is similarly easy:
remove/part find foo/x-refs 'c 2
Blocks, the universal dynamic container, are best for things
where you want to add and remove from frequently. In REBOL,
objects are less dynamic than blocks. Use them together and
make the world a better place.
-jeff
[13/36] from: jeff:rebol at: 12-Sep-2000 7:27
As Carl once related to me:
Semicolon was not picked because it's the LISP comment
character, the square brackets are not in REBOL because
they're found in FORTH, the reason for their use is based on
their position on the keyboard (home row) and the fact that
they are UNSHIFTED!! People will be typing these things ALOT
so they'd better be conveniently located and easy to hit.
REBOL doesn't want your fingers to hurt.
That's just an indication of the attention to detail that is
the REBOL standard.
Everyone essentially got the answer right-- A+! :-)
-jeff
[14/36] from: holger:rebol at: 12-Sep-2000 9:01
On Tue, Sep 12, 2000 at 07:27:07AM -0700, [jeff--rebol--net] wrote:
> Semicolon was not picked because it's the LISP comment
> character, the square brackets are not in REBOL because
<<quoted lines omitted: 3>>
> so they'd better be conveniently located and easy to hit.
> REBOL doesn't want your fingers to hurt.
The fingers of Americans anyway. German fingers are supposed to hurt,
I guess :-).
On a German keyboard the ";" is shifted. It is on top of the "," key. The
<
/">" are on a separate key. It is even worse for "["/"]", because a German
keyboard does not have these characters directly accessible at all. It has
A-umlaut and U-umlaut in those places (corresponding to the ASCII character
positions of "["/"]", which in the now-obsolete German 7-bit ISO encoding had
been replaced with those umlauts). Most keyboards let you enter "["/"]" as
Alt-A-Umlaut and Alt-U-Umlaut, but, of course, pressing the Alt key is even
more awkard than pressing the Shift key. There are even some older computer
systems which don't have "["/"]" in their German versions at all (e.g. German
localized versions of 8-bit systems like Commodore-64) or which don't usually
provide keyboards that have "["/"]" keys on them (e.g. Wang VS).
> Everyone essentially got the answer right-- A+! :-)
Or "1+" in German grades. Of course everyone's grade for "international awareness"
would be a little lower :-).
--
Holger Kruse
[holger--rebol--com]
[15/36] from: jeff:rebol at: 12-Sep-2000 8:14
Howdy Holger:
> > REBOL doesn't want your fingers to hurt.
>
> The fingers of Americans anyway. German fingers are
> supposed to hurt, I guess :-).
Utilitarianism: Do the thing that will make the most people
happy. If German keyboards were the most common, then I'm
sure we'd all be programming in umlauts instead! (And you'd
have to hit shift-alt-[ to get an umlaut on the less common
American layout keyboard.. haha).
> > Everyone essentially got the answer right-- A+! :-)
>
> Or "1+" in German grades. Of course everyone's grade for
> "international awareness" would be a little lower :-).
Allen did allude to other keyboard layouts of different
nationalities. The Australians always get high points for
international awareness.
-jeff
[16/36] from: t_degrav:rhrk:uni-kl at: 12-Sep-2000 12:33
Hi Elan,
just a small observation
[rebol--techscribe--com] wrote:
> To emphasize this pattern aspect, let's invent a new skip function,
> skip-one:
...
> skip-one blk
Maybe skip-one isn't the best choice of name here because
skip-one blk and
skip one blk do at least _look_ very similar, but the second line is
actually what you were argumenting against... ;-)
By the way, your explanation is very reasonable and I won't say anything
against it, but Keith is right that Rebol isn't that close to natural
languages in this case) and I'm not even a native English speaker myself ;-)
But these similarities are what RT emphasizes aren't they?
Tom
[17/36] from: ryanc:iesco-dms at: 12-Sep-2000 10:27
>> thing: [1 2 3 4 5 6 7 8 9]
== [1 2 3 4 5 6 7 8 9]
>> this: func [value] [:value]
>> to: func [value] [:value]
>> skip this thing 5 ;places
== [6 7 8 9]
>> change this thing to 5000
== [2 3 4 5 6 7 8 9]
>> this thing
== [5000 2 3 4 5 6 7 8 9]
>>
--Ryan
[18/36] from: slong:customcpu at: 12-Sep-2000 9:30
What was the ISO encoding did Amiga use for the A2000 systems?
Using Rick Stiles' Uedit, I got all sorts of useful characters to print
on inexpensive Canon BJ200 inkjets, even though they were not well
supported. Things like the little superscript "o" for degrees, or the
paragraph symbol were available with an "Amiga" key + character-key.
You just had to know the translation table. For Greek "theta" (O+/) I
had the choice of either lowercase or uppercase. XCad took them OK, and
displayed/plotted them cleanly, either from direct keyboard input or
when importing a text file.
I haven't yet gotten this PC keyboard to do this on my SuSE Linux system
:-(( Is it just ignorance on my part?
VariCad <http://www.varicad.com> uses the AutoCad "special character"
system: "~"+2 for the o+/ "theta". You can't have an uppercase style of
that one! With such a limited set of special characters, they don't
understand my desire for the capability left behind in the Amiga.
Stanley Long
Anchorage
[holger--rebol--com] wrote:
[19/36] from: holger:rebol at: 12-Sep-2000 11:09
On Tue, Sep 12, 2000 at 09:30:22AM -0800, [slong--customcpu--com] wrote:
> What was the ISO encoding did Amiga use for the A2000 systems?
Amiga did not use ISO at all. The ISO 7-bit encodings are obsolete now.
They were used on 8-bit machines only, back in the times when the overall
character set only had 7 bits, and the high bit was used for something
different (parity, inverted output, italics etc.).
AmigaOS uses ECMA-Latin-1/94, the official international character set in
the western world. It includes all characters that were formerly used
in the various ISO country-specific encodings. MacOS and most other
operating systems developed around that time use the same encoding.
Exceptions were HP (for Laserjet), Wang (WISCII), MS-DOS (PC-8) and
a few others.
Nowadays Unicode and UTF-8 are prefered.
--
Holger Kruse
[holger--rebol--com]
[20/36] from: rishi:picostar at: 12-Sep-2000 10:43
I didn't get that right...oops...probably because I use the dvorak keyboard layout rather
than
qwerty...
Rishi
[21/36] from: rebol:keithdevens at: 12-Sep-2000 15:13
Yay! Another Dvorak user! :-D
[22/36] from: rebol:techscribe at: 12-Sep-2000 14:09
Hi Jeff,
why not include an optional key mapping for system/ports/input? Perhaps
system/ports/input/state/misc could be used for this, if it is not already
being used for something else?
Then the input of Umlaut characters could be replaced by brackets before
they are passed to REBOL for processing and to the console output.
At 08:14 AM 9/12/00 -0700, you wrote:
> Howdy Holger:
>> > REBOL doesn't want your fingers to hurt.
<<quoted lines omitted: 14>>
> international awareness.
> -jeff
;- Elan [ : - ) ]
author of REBOL: THE OFFICIAL GUIDE
REBOL Press: The Official Source for REBOL Books
http://www.REBOLpress.com
visit me at http://www.TechScribe.com
[23/36] from: rishi:picostar at: 12-Sep-2000 14:07
while we are on the subject of dvorak....
For those who don't know, dvorak is an alternate and superior keyboard layout than qwerty.
Qwerty
was actually designed to slow down the typist (solution to problem of early type writers
jamming) by
spreading commonly used keys away from the home row. The guy who invented dvorak, Dr.
Dvorak, spent
half his life or so doing it... It places most commonly used keys close to home and balances
load
between left and right hands equally. While debatable, I find it faster, more accurate,
and
definately more comfortable on my hands (all my hand pain from using keyboards went away
after
switching to dvorak). And you don't need to by new keyboard. Most OS's (including beos,
windows,
macos, amiga, etc...) have option built into setting to allow you to remap keyboard to
dvorak.
anyway, here is a dvorak url if anyone is interested :
http://www.mwbrooks.com/dvorak/
It works really well with rebol...
(hey, if i was in a dvorak message board or qnx discussion board and the topic of programming
languages came up...I would definately give REBOL a plug!)
Rishi
[24/36] from: rebol:techscribe at: 12-Sep-2000 14:24
Hi Tom,
you wrote:
>[rebol--techscribe--com] wrote:
>> To emphasize this pattern aspect, let's invent a new skip function,
<<quoted lines omitted: 5>>
>skip one blk do at least _look_ very similar, but the second line is
>actually what you were argumenting against... ;-)
:-).
>By the way, your explanation is very reasonable and I won't say anything
>against it, but Keith is right that Rebol isn't that close to natural
>languages in this case) and I'm not even a native English speaker myself ;-)
>But these similarities are what RT emphasizes aren't they?
Sometimes natural languages are weird. They are not always all that
consistent. You can find examples that promote skip 3 blk. You can also
find examples that promote skip blk 3. Example:
Would you prefer
Jane hit twice John.
Or
Jane hit John twice.
REBOL skip blk 3
>> Jane hit John twice.
Jane ==>
hits John.
hits John.
>> REBOL skip blk 3
== [4 5]
hit: func ['what repeat] [
what: join what "."
loop repeat [print [" hits" what] ]
]
Jane: does [ print "Jane ==>" ]
twice.: 2
;- Elan [ : - ) ]
author of REBOL: THE OFFICIAL GUIDE
REBOL Press: The Official Source for REBOL Books
http://www.REBOLpress.com
visit me at http://www.TechScribe.com
[25/36] from: petr:krenzelok:trz:cz at: 13-Sep-2000 11:20
[rebol--techscribe--com] wrote:
> Hi Keith,
> you wrote:
<<quoted lines omitted: 13>>
> therefore I know that the element is in some position in that block,
> namely, in the third position.
OK Elan, I don't feel myself so experienced as you surely are, but how e.g. 'save
fits your rebol language philosophy?
save %where what ...
It was the most confusing thingy once I first came to the language. Maybe just
czech language mind mapping works a little bit differently :-), but imho we first
think of what we want to save - as to save the content is on some purpose - e.g.,
prevent loosing data, and only then we decide, where to store it, as it is just
secondary problem ...
So? :-)
Thanks,
-pekr-
[26/36] from: al:bri:xtra at: 13-Sep-2000 21:34
pekr wrote:
> OK Elan, I don't feel myself so experienced as you surely are, but how
e.g. 'save fits your rebol language philosophy?
> save %where what ...
I'm not Elan, but I thought I could answer this. It's based on 'read and
'load:
read %where
load %where
To extend to 'save, as based on Elan's reasoning:
save %where what
the extra stuff is on the end.
Andrew Martin
Not Elan...
ICQ: 26227169
http://members.ncbi.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/
[27/36] from: g:santilli:tiscalinet:it at: 13-Sep-2000 12:03
[jeff--rebol--net] wrote:
> REBOL doesn't want your fingers to hurt.
But here I need shift for the semicolon, and "ALT GR" for the
square brakets (on the Amiga it's better, the [] don't need shift
on the keypad). :-(
Should I buy an US keyboard? :)
Regards,
Gabriele.
--
Gabriele Santilli <[giesse--writeme--com]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[28/36] from: petr:krenzelok:trz:cz at: 13-Sep-2000 12:21
[g--santilli--tiscalinet--it] wrote:
> [jeff--rebol--net] wrote:
>
> > REBOL doesn't want your fingers to hurt.
>
> But here I need shift for the semicolon, and "ALT GR" for the
> square brakets (on the Amiga it's better, the [] don't need shift
> on the keypad). :-(
>
> Should I buy an US keyboard? :)
:-))) well, let me add Czech scenario:
AltGr + F = [
AltGr + G = ]
uh oh, the key on the left side of "1" gives me semicolon ...
Well, I can turn US keyboard by certain key combination, but ... :-)
-pekr-
[29/36] from: joel:neely:fedex at: 13-Sep-2000 7:44
I think that there's a very practical pseudo-ergonomic reason why
all of these "verbs" have their arguments in the order:
take-action upon-this-thing with-these-other-things ...
To use Petr's example of
save %where what
the overwhelmingly most likely (IMHO) case is that %where is a file
or a word that references a file, and that the what expression can be
arbitrarily more complex. (I.e., more likely than to have a complex
expression that resolves to the file being written into, with a very
simple expression for the data value.)
Speaking for myself, about the most complex expression I normally use
for the target of save or write is something resembling
write to-file string-expression data-values
whereas it's very common for me to have something of the form
write %some-file complicated-expression-to-evaluate-...
...into-the-data-vaue(s)-to-be-written-to-the-file-...
...previously-named
Given the absence of argument list delimiters, long involved
expressions (and, hey! this is an Expression-Based language, right ;-)
can require careful attention to layout/typography to be readable.
This goal is enhanced by placing the shortest complete parts first.
DISCLAIMERS:
1) I have no idea whether this was a deliberate choice in the design
of REBOL. But it makes sense to me.
2) I'm well aware that our German friends (for example) a literature
whose style long, sophisticated utterances with verbs deferred to
the end includes have. So all of the above conjecturing very
likely culturally influenced has been. Perhaps those of us whose
native language American or British is a tendency toward attention
deficit disorder have.
-jn-
[Petr--Krenzelok--trz--cz] wrote:
[30/36] from: agem:crosswinds at: 13-Sep-2000 17:01
[Petr--Krenzelok--trz--cz] wrote on 13-Sep-2000/11:20:13+2:00
> [rebol--techscribe--com] wrote:
> > Hi Keith,
<<quoted lines omitted: 27>>
> fits your rebol language philosophy?
> save %where what ...
action destination source1 source2 ..
not block first, destination first.
[31/36] from: agem:crosswinds at: 13-Sep-2000 17:01
I agree.
note
ya-skip: func[n blk /r1 1 /r2] [...]
ya-skip/r1/r2 a + b + c blk lots of stuff for 1 and for 2
where we work on?
second: englishs have
skip 3 blk .
not
skip 3 blk
there is a real defined end with action at start,
destination at end and the rest in the middle. a bit
like brackets. where is the end in rebol?
and another
append append blk 1 2
works
append 1 append 2 blk
would reverse?
Volker
[joel--neely--fedex--com] wrote on 13-Sep-2000/7:44:50-5:00
[32/36] from: jeff:rebol at: 13-Sep-2000 10:03
Howdy Elan:
> Hi Jeff,
> why not include an optional key mapping for
<<quoted lines omitted: 4>>
> brackets before they are passed to REBOL for processing and
> to the console output.
I think sytem/console/keys is there for this kind of thing,
but currently it doesn't appear to me that anything uses it.
Aye Jim?
-jeff
[33/36] from: jeff:rebol at: 13-Sep-2000 10:08
> > REBOL doesn't want your fingers to hurt.
>
> But here I need shift for the semicolon, and "ALT GR" for
> the square brakets (on the Amiga it's better, the [] don't
> need shift on the keypad). :-(
>
> Should I buy an US keyboard? :)
Wow-- why do all these international keyboards make
everything so inconvenient to type? [Ducks and runs for
cover] ;-)
[Maybe the send key should be harder to hit on my keyboard (-:]
-jeff
[34/36] from: alex:pini:mclink:it at: 14-Sep-2000 15:34
>- Open Your Mind -<
Quoting from [joel--neely--fedex--com's] message (13-Sep-00 14:44:50).
j> 2) I'm well aware that our German friends (for example) a literature
j> whose style long, sophisticated utterances with verbs deferred to
j> the end includes have. So all of the above conjecturing very
j> likely culturally influenced has been. Perhaps those of us whose
j> native language American or British is a tendency toward attention
j> deficit disorder have.
You're beginning to sound like a green Jedi master. :-)
Alessandro Pini ([alex--pini--mclink--it])
You must unlearn what you have learned.
(Yoda)
[35/36] from: robert:muench:robertmuench at: 27-Sep-2000 19:39
> -----Original Message-----
> From: [jeff--rebol--net] [mailto:[jeff--rebol--net]]
<<quoted lines omitted: 6>>
> so they'd better be conveniently located and easy to hit.
> REBOL doesn't want your fingers to hurt.
Hi, I know I'm late on this (still 1215 unread Rebol postings to screen ;-))
but Carl, you should have had a look on a none US keyboard. To get the [] on
a German keyboard you have to use AltGr for this!! But for {} it's the
same... Robert M. Muench (because people might no longer remember me on this
list ;-))
[36/36] from: petr:krenzelok:trz:cz at: 27-Sep-2000 19:55
----- Original Message -----
From: <[robert--muench--robertmuench--de]>
To: <[list--rebol--com]>
Sent: Wednesday, September 27, 2000 7:39 PM
Subject: [REBOL] Rebol Tech, please answer. Two questions. Re:(6)
> > -----Original Message-----
> > From: [jeff--rebol--net] [mailto:[jeff--rebol--net]]
<<quoted lines omitted: 8>>
> > REBOL doesn't want your fingers to hurt.
> Hi, I know I'm late on this (still 1215 unread Rebol postings to screen
;-))
> but Carl, you should have had a look on a none US keyboard. To get the []
on
> a German keyboard you have to use AltGr for this!! But for {} it's the
> same... Robert M. Muench (because people might no longer remember me on
this
> list ;-))
hey Robert, where have you been all the time?
-pekr-
Notes
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted