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

World: r3wp

[!REBOL3-OLD1]

Geomol
25-Aug-2009
[17034x6]
Re. new datatypes. Would all of set-paren!, get-paren! and lit-paren! 
make sense? Working like this:

>> a: 4
>> :(a)
== (4)		; type paren!
>> '(a)
== (a)		; type paren!
>> blk: [a b c]
>> (blk/2): 42
>> b
== 42

I suggested, a get-block! should work, so
:[a b c]
was the same as
reduce [a b c]
Maybe it's better, if it was:
reduce [:a :b :c]
?
I came to think of symmertry between parens and blocks. It make sense 
to me to have a lit-paren! datatype. What about a lit-block! datatype? 
The thing is, parens are evaluated by default, blocks are not. So 
a block acts like a lit-block! would, I guess. Is it a good idea, 
that blocks are not evaluated by default? A lot of functions take 
blocks as arguments. Some functions reduce their block argument, 
some don't. This can be confusing. If blocks were always evaluated, 
functions didn't have to reduce them. And then a lit-block! datatype 
would make sense.

Comments?
Example of functions, that treat they block argument differently:

>> first [a]
== a
>> print [a]
** Script Error: a has no value


If blocks were always evaluated, and we had lit-block!, it would 
look like this:

>> first [a]
** Script Error: a has no value
>> first '[a]
== a
>> print '[a]
a
Consequense is, functions had to be defined using lit-blocks... Nah, 
probably not a good idea. ;-)
*Consequence*
The tuple! datatypes is in the scalar! typeset. Isn't it more like 
a series? Maybe it's because, a tuple can be max 10 bytes!?
btiffin
25-Aug-2009
[17040x2]
John; I've become quite a fan of REBOL unreduced block data.  Super 
handy and learning the wisdom of it is a right of passage.
tuple! is a scalar  imho, well a scalar "record"    insert 1.2.3.4.5 
6  would do what?
Geomol
25-Aug-2009
[17042]
Maybe produce 6.1.2.3.4.5. Tuple has some series things to it:

>> second 12.34.56
== 34
btiffin
25-Aug-2009
[17043]
Sorry John ... I had ^s turned off ... drop that last snarky bit 
about   insert.   Stupid question that could very well have some 
intelligent and reasonable responses.
Geomol
25-Aug-2009
[17044]
:)
btiffin
25-Aug-2009
[17045]
But I still see a tuple! as a scalar type with no head or tail really.
Geomol
25-Aug-2009
[17046x3]
I hope, we can one day make new datatypes. I would make a complex 
datatype. Wouldn't it be cool to be able to calculate:

1.2+4.5i * 3.14+1i
Maybe it's too much to hope for, to be able to enhance the lexical 
analysis with new datatype recognision?
Or a range datatype:

>> blk: [a b c d e f g]
>> blk/3-5
== [c d e]
BrianH
25-Aug-2009
[17049x3]
User-defined datatypes won't be recognized lexically, except perhaps 
in serialized form. However, serialized datatypes have to be REBOL 
syntax inside the block. It's too much to hope for REBOL to become 
Perl, or get Lisp's read macros.
You can use whatever syntax you like inside strings though.
Tuples are scalars because you can do math with them. They aren't 
in series! because they don't have position, same as bitset!.
Maxim
25-Aug-2009
[17052]
John, actually previous version of rebol had "aggressive" evaluations 
on some blocks in some circumstances and it was quite annoying in 
fact.  it got removed in 2.3 IIRC forcing us to reduce a little more, 
but now we have control.
Maxim
26-Aug-2009
[17053x7]
if the rebol parser catalogued junk, it could shift to custom datatype 
hooks (just like parse tries to match patterns) until it finds a 
rule that says... "YES... up to here, I know what this means".
it definitely is possible language-wise, we are already doing it 
with string parsing and using load/next.  The defining moment here 
is the decision by Carl to "let go" of  the total expressive control 
of the language, and that will not happen soon IIRC.  its already 
cool that he has decided to open source all but the deep core of 
the language.
maybe with R4, after all of the goodies this opening will have brought, 
he will be able to contemplate opening up a bit more.  There is always 
a risk that letting go of *total* control can warp your creation 
to something you don't like.  But my experience in a decade of REBOL 
shows that stuff which isn't "sanctified" by RT have a lot of difficulty 
picking-up speed.


When you (i.e. Carl) spend 10 years on a project and it doesn't take 
off in-part because the responsability of keeping control stymies 
its growth, to a slower pace than that of the industry, IMHO you 
realize that the possible upside to *total* control definitely is 
dwarfed by having a mass of like-minded peers who move along with 
you.  


obviously no one sings exactly the same tune, but you need to try 
out stuff in order to know if its really a good or a bad idea... 
I'd rather have 100 people doing this, and then selecting the obvious 
clear winners than trying to muse about it, try a single idea and 
finally realize it wasn't a good idea.


Plus, what is good philosophy for RT isn't good for everyone... the 
proof is that the PITS model isn't enough for everyone.  Even RT 
had to acknoledge this.
REBOL "The language" is IMHO the best on the surface of Earth, but 
the platform (the actual executable, the desktop, view, IOS, et all) 
all show signs of tearing at the seams when you really want to "DO 
REAL WORK". 


You can get by, but its often painfull, or result to dubious work-arounds. 
  I have a lot of experience in big REBOL apps, so its not just word 
of mouth... I'm one of the few who has been succesffull at PITL work 
in R2 (hobby and commercial) for years.  But not everyone likes to 
say that problem-solving the platform itself is part of the work. 
 Most people want to work, they don't have time to try and fix view, 
or some tcp scheme, or charging their clients 30 hours to find a 
way to make 'CALL  work properly (or implement a MS COMLIB hack).
this looks like a vent, but its not.  I'm actually happy about everything 
that is happening with R3.   :-)
Every single broad decisision in R3 has been an enabling one for 
REBOL at large (both platform and language).   


Unfortunately, some things still require the core to be improved 
a bit, but we are nearing a point where REBOL will be able to fly 
on its own wings.   Just look at my attempt to get OpenGL to work 
with R3... it took me  10 hours of work from downloading the extension-enabled 
R3 version, downloading MS compiler, scrubbing the net for OpenGL 
reference material, libs, examples... and integrating all of this. 
 I've never coded OpenGL directly before... 


now imagine 100 of us doing this... that is what I see in REBOL's 
future within 2 years.  You will have things like trolltech QT bindings 
appearing, REBOL libs for any precise API out there... finally REBOL 
will be able to evolve with the rest of the world, and hopefully, 
impact its philosophy on the Computer Science more obviously...
JSON is a proof that it already has... now let's get that into the 
spotlight and start letting REBOL do what its really good at.... 
high-level application development...


 let it be the MCP for all the cool APIs, libs, network services, 
 game engines, web sites, smart appliances, etc... out there.


 (Refer to the movie Tron, for those who don't know what MCP stands 
 for... ;-)
Graham
26-Aug-2009
[17060]
What's JSON got to do with this?
Maxim
26-Aug-2009
[17061]
JSON was inspired in part by REBOL's simplicity.  tis almost a 1:1 
match to rebol's data model... just with a different syntax.
Graham
26-Aug-2009
[17062]
I'll only believe it when I can get this rebol-to-jason to work!
Maxim
26-Aug-2009
[17063x2]
if more people could actually USE REBOL daily, we'd see more of the 
philosophy of REBOL trickling into the industry.   People forget 
that REBOL is born out of a different perspective on computer science.
I don't see why you're having so much trouble... when I read the 
JSON reference docs a few months ago, I could almost do a replace/all 
of a JSON data set to REBOL's  seems pretty obvious to write a lib 
for.f
Graham
26-Aug-2009
[17065]
could almost
Maxim
26-Aug-2009
[17066]
lets do JSON discussion in javascript group....
Geomol
26-Aug-2009
[17067x2]
They aren't in series! because they don't have position

What do you mean?

>> t: 11.22.33.44.55.66.77.88.99.00
== 11.22.33.44.55.66.77.88.99.0
>> t/5
== 55
>> third t
== 33

Some series stuff works with tuples, but not all like SKIP.
Ah, maybe you mean, my tuple t by itself doesn't have a position? 
So I can't do: next t
Maxim
26-Aug-2009
[17069x3]
yep... the /1 /2  etc are accessors.
anyone know if any work is being done on the multi processing capabilities 
of R3 or if that has been definitely shelved for later?
later as in...  for 6+ months....
Pekr
26-Aug-2009
[17072x2]
I think that Tasking will be postponed for 3.1, or 3.0 gets never 
released :-)
There were still talks in REBOL community about the model of concurency, 
and some other systems studied.
Maxim
26-Aug-2009
[17074]
ok so won't even expect any kind of promise until this spring ... 
ah well
Pekr
26-Aug-2009
[17075]
yes, it might be maing topic for May Prague DevCon, where 3.1 will 
be officially launched :-)
BrianH
26-Aug-2009
[17076x2]
Maxim, the reason that custom datatypes can't extend the syntax is 
technical, not a control issue. When TRANSCODE/on-error was proposed, 
Carl revealed that TRANSCODE can't call out to external code on syntax 
exceptions without making it drastically slower, too slow for use. 
This is why the /error option was implemented instead: it doesn't 
use hooks or callbacks.


We do have custom datatype hooks for the serialized syntax constructors, 
but those are passed the preparsed REBOL data inside the #[ ]. Custom 
syntax hooks for ordinary literals would require a complete redesign 
of the parser, and that redesigned parser would be much worse, in 
terms of resource usage (speed, memory).
TRANSCODE/error *is* the junk! type, except it is (properly) an error! 
instead, just not thrown. You can process the info in that error 
and continue as you like.
Maxim
26-Aug-2009
[17078]
TRANSCODE/error  good work around  :-)
BrianH
26-Aug-2009
[17079]
It was the compromise Carl came up with - my idea was the /on-error 
option, but that was rejected because it required TRANSCODE to call 
back into a provided function, something Carl said was infeasible.
Pekr
26-Aug-2009
[17080]
Ah, Carl's back from few days off. Started to fight spammers on blogs 
a bit :-)
Ladislav
28-Aug-2009
[17081x3]
John, re set-paren!, etc. dataypes - I am not a fan of those
re "symmetry between parens and blocks": "it make sense to me to 
have a lit-paren! datatype" no need, use:
quote (paren)