r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3-OLD1]

Sunanda
31-Jul-2009
[16378]
Following on from asking about CALL and LAUNCH.....Is TASK meant 
to be any thing other than a placeholder in the current alphas? All 
it does for me is crash the console.
Ladislav
31-Jul-2009
[16379]
Does anybody know the reason that money! is not included in the list 
of immediate datatypes for plug-ins?
 - money! is not 64-bit datatype
Robert
31-Jul-2009
[16380]
Money: Well, but it should be possible to exchange it as a struct 
or whatever is needed. And we can provide some C-level code to handle 
the internal format.
Pekr
31-Jul-2009
[16381]
I somehow can't understand, what is the difference between a plug-in 
funciton, and for e.g. C level function wrapped into DLL call (R2 
way)? The example provided in doc shows rather complicated aproach 
of how such function has to be constructed. You simply can't write 
it your way? There has to be some reason for it :-)
BrianH
31-Jul-2009
[16382x2]
Pekr, there is no regression: CALL in R3 is an entirely new function, 
which uses an entirely different, lower-level method to call stuff. 
I don't know whether the /output and /wait methods are possible with 
the new method, or whether they will be necessary once CALL is fixed. 
Right now CALL is a placeholder - the implementation is going to 
be in the host code (read: open-source), so development has been 
put on hold on CALL until the host code is released (which is intended 
to be soon).
Tasks are pretty much placeholders for now, but are intended to be 
included in the final R3. The model isn't settled.
Geomol
31-Jul-2009
[16384x2]
Is there a problem with getting operators?

>> get to word! "="
** Script error: = word is not bound to a context
Using get-word syntax works:

>> :=
== op!
Sunanda
31-Jul-2009
[16386]
Ditto:
>> get to-word '=
== op!
Geomol
31-Jul-2009
[16387x3]
The get-word syntax has a problem with the <> operator:

>> a: :<>
** Syntax error: invalid "word-get" -- ":"
Sunanda, so making string to words and making lit-words to words 
isn't quite the same, it seems!?

>> (to word! '=) = (to word! "=")
== true
>> (to word! '=) == (to word! "=")
== false
Strange!

>> type? to word! '=
== word!
>> type? to word! "="
== word!
Sunanda
31-Jul-2009
[16390]
Yes --  not sure why. Brian knows the internals.

Re broken syntax. QUOTE can help, eg:

>> get to-word  '<>
** Syntax error: invalid "word-lit" -- "'"

But:
>> get to-word quote <>
== op!
Geomol
31-Jul-2009
[16391]
:-) QUOTE
(never heard of that one before)
Sunanda
31-Jul-2009
[16392]
It's R3 only
BrianH
31-Jul-2009
[16393]
You can't do QUOTE for words in R2, but it works for other types 
(including other word types).
Geomol
31-Jul-2009
[16394]
What's the need for QUOTE, when we have the get-word syntax?
BrianH
31-Jul-2009
[16395x5]
QUOTE is mezzanine, and in mostly for qoting function references 
and other active values in generated code.
Geomol, the reason that
>> 'a == to-word "a"
== false

is because == now takes into account the binding of the word. TO-WORD 
string generates unbound words. LOAD string generates words that 
are bound to the user context - console commands are loaded just 
like scripts.
>> 'a = use [a] ['a]
== true
>> 'a == use [a] ['a]
== false
If you want to take into account the binding of a word but not its 
type (equivalency within the word types), use EQUIV? (no operator 
for it).
>> equiv? 'a use [a] [/a]
== false
>> equiv? 'a /a
== true
Geomol
31-Jul-2009
[16400]
I see. Being a tad complex, I think.
BrianH
31-Jul-2009
[16401]
We completely revamped equivalence. There are 4 levels now. There 
was a big blog discussion about it.
Geomol
31-Jul-2009
[16402]
4 levels of equivalence, wow! Is that a record in computer languages? 
;-)
BrianH
31-Jul-2009
[16403x2]
Not even slightly - many languages have it much worse :)
Btw, if you want to get the value of the <> word, remember that the 
same value is also assigned to the != word:
>> same? get quote <> :!=
== true
Geomol
31-Jul-2009
[16405]
Yeah, I found !=. I guess, the :<> is a lexical bug?

(I'm still working on a deep test on the lexical analyzer and hope 
to send the result to Carl and the rest of the R3 developers in the 
near future.)
BrianH
31-Jul-2009
[16406]
Please add the bug (perhaps aas a wish) to CureCode. There are other 
unresolved lexical bugs there already (like #537).
Geomol
31-Jul-2009
[16407x2]
I'll handle it in my lex report. There are many problems with < and 
> in different combinations. I guess, it's because they clash with 
the tag! datatype. For example:

>> '<
** Syntax error: invalid "word-lit" -- "'"
while other operators work ok as lit-words:

>> '=
== =
BrianH
31-Jul-2009
[16409]
Any use of those words conflicts with the tag! syntax. The trick 
is to set priorities.
Geomol
31-Jul-2009
[16410]
No, the trick is to program the lexer correctly without bugs! ;-)
BrianH
31-Jul-2009
[16411x2]
The lexer is where the priorities are set. What you are talking about 
isn't bugs, it is preferences (and good ones at that).
Non-configurable preferences, mind you. They have to be set in the 
source of the lexer.
Geomol
31-Jul-2009
[16413]
Ok, I see it differently. If it's possible to make a lexer, that 
can cope with tags and lit-words and get-words like '< and :<, then 
I see it as bugs in the current implementation.
BrianH
31-Jul-2009
[16414x3]
You could see it either way. Those "bugs" are backwards compatible 
with R2. However, this is clearly related to bug#666 :)
I prefer to think of them as justifiable improvements :)
We take Wish tickets as seriously as Bug tickets. Whether it is a 
Wish or a Bug doesn't affect prioritization of ticket handling.
Geomol
31-Jul-2009
[16417]
Output from my work-in-progress lexer:

:>
Valid get-word: :>
'>
Valid lit-word: '>
<a>
Tag begin


Next it should get the whole tag and return that as a valid tag. 
I think, it's possible to make a lexer, that can handle all this 
correctly (as I see it).
BrianH
31-Jul-2009
[16418]
It all sounds doable so far. Please remember #537 in your proposal.
Geomol
31-Jul-2009
[16419]
Why would you write

a,


? Comma is not allowed in words. I wondered about this some months 
ago, like if Carl had some future idea for the use of comma!?
BrianH
31-Jul-2009
[16420]
I don't want to allow , in words, I want to have the word be recognized 
and then have the lexer complain about the , next time.
Sunanda
31-Jul-2009
[16421]
Try not to break things like:
>> url? *::,
== true
(It's not always as easy as it looks :-)
BrianH
31-Jul-2009
[16422]
Read the comments - this would be word-only. This is why I was so 
precise in the ticket, referring to TRANSCODE behavior.
Geomol
31-Jul-2009
[16423]
Brian, ah ok.


As : is not allowed in words, that url example should be ok. But 
I'm wondering, why comma isn't allowed in words, as point is.

>> a.: 1
== 1
>> a,: 1
** Syntax error: invalid "word" -- "a,:"


I don't see the reason, other than if Carl has some special future 
idea for comma.
BrianH
31-Jul-2009
[16424]
The comma is so bad syntactically that throwing an error every time 
someone tries to use it is considered a valuable feature.
Geomol
31-Jul-2009
[16425]
Or maybe because comma is used in many languages to separate arguments, 
and by not allowing comma in words, REBOL might be easier to read 
for everyone.
BrianH
31-Jul-2009
[16426]
Plus, having something as difficult-to-see as a comma in any syntax 
role is considered a bad thing. REBOL syntax didn't come out of nowhere 
- these choices were maade for good reasons. It's why we don't use 
periods as well.
Geomol
31-Jul-2009
[16427]
If you get it, like to describe in #537, what should this return 
then?

transcode "a,0"