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

World: r3wp

[!REBOL3 Schemes] Implementors guide

Maxim
20-Jan-2010
[1739]
Carl is usually responsive when you give him something to look at.


if all he has to do is direct users into improving code, his intellect 
is much more usefull than if he is occupied hammering code out and 
sifting thru tedious RFCs.
Graham
20-Jan-2010
[1740x2]
I've got this in my network code ..

			;find/part msg join generator " OK" 8
			join generator " OK" = copy/part msg 8


and can't figure out why the first line does not work but the second 
does ....
Somewhere I came across a document that showed how 'open, 'read etc 
would search the schemes to invoke the correct actor.  Anyone know 
the link?
Steeve
21-Jan-2010
[1742x2]
weird, I thought exactly the opposite. Why the second case is working 
?
Should be:
(join generator " OK") = copy/part msg 8
For the firt case, i'd rather prefer.
>> find/match msg join generator " OK"
Graham
21-Jan-2010
[1744x3]
hmm.. I didn't need the ( )
I use find/part because I want to match at the start of the line
of the series
Steeve
21-Jan-2010
[1747]
Then, use find/match

But using Parse is better to my mind (less memory overhead)
>> parse msg [generator " OK" to end]
Graham
21-Jan-2010
[1748x2]
True ... but still there's a bug in find/part
Isn't there some new way to return true from parse without the "to 
end" now?
Steeve
21-Jan-2010
[1750]
(break/return true) but i don't know if it's faster
Graham
21-Jan-2010
[1751]
Yeah .. that's what I was thinking of
Steeve
21-Jan-2010
[1752x2]
but you must have a loop
>> loop 1 [parse msg [generator " OK" (break/return true)]]
Graham
21-Jan-2010
[1754]
compose [ (generator)  ...
Steeve
21-Jan-2010
[1755]
with a sub-rule...
>> match: [(break/return true)]
>> loop 1 [parse msg [generator " OK" match]]
Graham
21-Jan-2010
[1756]
why the parens in your sub rule?
Steeve
21-Jan-2010
[1757]
because break is not a part of the parse dialect.
It's a regular function
Graham
21-Jan-2010
[1758x2]
ahh... not thinking
just looking ... break does appear in the new parse dialect
Steeve
21-Jan-2010
[1760]
but not break/return
BrianH
21-Jan-2010
[1761]
And in the R2 parse dialect, but the meaning in both cases is different 
from the function.
Graham
21-Jan-2010
[1762x2]
brianh, what's causing the find/part error?
parse documentation is very skimpy .. .need lots of new examples
BrianH
21-Jan-2010
[1764]
There are more than a few FIND bugs. Check CureCode to see if yours 
is covered already.
Maxim
21-Jan-2010
[1765]
graham, can't you just use the return keyword in R3 parse?
BrianH
21-Jan-2010
[1766]
PARSE documentation is actually pretty extensive, but not yet organized. 
There was a lot of thorough research conducted during the parse project 
and revamp. It just hasn';t been put into the docs yet.
Graham
21-Jan-2010
[1767x2]
it's not there in curecode
but it's more subtle ... as it works outside the function
Steeve
21-Jan-2010
[1769]
(reworking on ftp scheme currently )
Graham
21-Jan-2010
[1770]
going to implement ftp site to site transfer ?  :)
Steeve
21-Jan-2010
[1771]
yup, i need it for PC to AS400 file's exchanges
Graham
21-Jan-2010
[1772]
So, I have some bugs in my scheme?
Steeve
21-Jan-2010
[1773x2]
and remote commands too
well, missing lot of commands :)
Graham
21-Jan-2010
[1775x4]
oh yeah ...minimal functionality ... for someone else to finish ;)
cwd: func [ mbox [port!] dir [string!]][
	if in mbox/scheme/actor 'cwd [
		mbox/scheme/actor/cwd dir
	]
]
which is what I have in my imap scheme ... could use similar for 
ftp
actor: [
	cwd: funct [ dir [string!]][
			write mbox compose [ SELECT (dir) ]
			read mbox
		]
]
Steeve
21-Jan-2010
[1779]
i'm doing differently currently, i only use WRITE to pass block of 
commands to parse
Graham
21-Jan-2010
[1780]
so the user still has low level access to the scheme or not?
Steeve
21-Jan-2010
[1781]
don't know what u mean exactly, so i would say... maybe
Graham
21-Jan-2010
[1782]
the user can still use the port in what carl calls mixed mode ...
Steeve
21-Jan-2010
[1783]
OPEN, WRITE and CLOSE will be the only one usefull actors in my scheme
Graham
21-Jan-2010
[1784x2]
I think mine allows file upload resume by sening a APPE command with 
the rest of the file
but rather than handling it directly ... you can just write the command 
to the port
Steeve
21-Jan-2010
[1786]
a session will be something like:
>> session: open ftp://ftp.site.com
>> write session [
	USER "toto"
	PASS "****"
	PASV
	BINARY
	CD /dir-temp
	GET %thif-file
]
>> close session
Graham
21-Jan-2010
[1787]
ok, looking forward to seeing it ...
Steeve
21-Jan-2010
[1788]
and i will use a dialect to construct the state diagrams