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

World: r3wp

[!REBOL3]

Steeve
6-Mar-2010
[1400]
with 2 blocks it's easy, one for the definition, one for the assignement.

>> assign: funco [spec vals][append construct spec vals]
>> assign [a: b: c: d:][c: 2]
== make object! [
    a: none
    b: none
    c: 2
    d: none
]
Paul
6-Mar-2010
[1401x2]
Explain what you mean by fundamental?
Am I asking for the construct code to be change - duh!
Andreas
6-Mar-2010
[1403]
That you want a peculiar change to set-word! semantics.
Paul
6-Mar-2010
[1404x2]
Never said that Andreas.  Just in how it wants to handle the processing.
The block wouldn't be passed to set directly is all
Andreas
6-Mar-2010
[1406]
Which block?
Paul
6-Mar-2010
[1407]
The code in construct would have to parse the block
Chris
6-Mar-2010
[1408x2]
From (a: (b: (c: 2))) to ((a:) (b:) (c: 2))
That's a fundamental change...
Paul
6-Mar-2010
[1410]
so what is an unfundamental change?
Chris
6-Mar-2010
[1411]
Writing an intermediate solution for special cases...
Paul
6-Mar-2010
[1412x2]
its code that never gets executed unless the refinement is set.
no different than an either.
Andreas
6-Mar-2010
[1414]
unchain: func [spec] [forall spec [if all [set-word? first spec not 
tail? next spec set-word? second spec] [insert next spec :none]] 
spec]
Paul
6-Mar-2010
[1415]
And now I would ask you why add that function to R3 when you already 
pass a spec to contruct in the first place?
Andreas
6-Mar-2010
[1416]
I guess that's what you want. Now adding that as refinement to construct 
is a question of wether it would be of general utility. If not, it 
would just be bloat.
Paul
6-Mar-2010
[1417]
My point is that if we just adding your entire function to R3 verse 
a refinement to construct - we would be adding MORE bloat
Andreas
6-Mar-2010
[1418]
I personally think that neither that function nor the refinement 
should be added.
Paul
6-Mar-2010
[1419]
You fear change?
Andreas
6-Mar-2010
[1420]
Nope. I just don't see any general utility of it.
Paul
6-Mar-2010
[1421]
See I do.
Andreas
6-Mar-2010
[1422]
That's why it probably is best kept alongside your code, to cater 
for your special purpose needs.
Paul
6-Mar-2010
[1423]
So if I went to falcon or Lua and said do that and they did they 
could say they could handle such code safer than REBOL could.
Andreas
6-Mar-2010
[1424]
That's not an safety issue.
Paul
6-Mar-2010
[1425x3]
The hell it aint.
Maybe your confortable with it.  Oh well.  But if you don't think 
the chain evaluation should be a safety concern then I think your 
not being rational.
let's say you have a service oreient protocal that is sending unencrypted 
blocks of data that is getting sent into contstruct on the other 
end.   All I have to do is capture it midstream alter the block and 
forward on and I can cause your code to behave differently.
Henrik
6-Mar-2010
[1428]
why is that a safety concern? in that case REBOL would be one big 
security hole as this is standard syntax.
Paul
6-Mar-2010
[1429]
Are you saying it isn't true Henrik?
Andreas
6-Mar-2010
[1430]
Paul, construct is using standard REBOL syntax in this case. If that 
is a safety concern for your purposes, that's outside the scope of 
CONSTRUCT.
Chris
6-Mar-2010
[1431x2]
If you're already iterating through your block to convert every second 
word to set-word, then why not also neutralise any set-words that 
should be - seems that is where the flaw is...
..should not be...
Paul
6-Mar-2010
[1433]
But what if I'm not the one doing it.
Henrik
6-Mar-2010
[1434]
Paul, you don't create services that carelessly evaluate data that 
is potentially manipulated by an attacker. That's a security hole 
and bad coding. That's one of the good things about dialects.
Chris
6-Mar-2010
[1435]
Agreed, and that's what this is - a dialect - as Rebol's sop is chaining...
Paul
6-Mar-2010
[1436x3]
I'm not saying to stop chaining am I?
I'm saying to offer a case where we don't chain.
But obvoiusly you guys are not in favor of options.
Andreas
6-Mar-2010
[1439x2]
Why not also offer a case where we drop all strings encountered?
Or a case where we double all integers?
Paul
6-Mar-2010
[1441x3]
Are the strings a concern?
are single integers a concern?
We have build in code to handle those things don't we?
Andreas
6-Mar-2010
[1444x2]
Do we?
I don't know of a construct refinement that drops all strings.
Paul
6-Mar-2010
[1446]
Then we just make sure they get assigned to the proper place don't 
we?
Henrik
6-Mar-2010
[1447]
yes, we do. with PARSE and dialects.
Andreas
6-Mar-2010
[1448]
And that's what you should do too, Paul.
Paul
6-Mar-2010
[1449]
I do Andreas, I have to currently use more bloat just like all of 
us do to handle it.