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

World: r3wp

[Core] Discuss core issues

Volker
27-Aug-2005
[1811x3]
but if you don't do such tricky assigining in reduce, this should 
work
What did i write? Trying explanation again.. We need do/next to know 
which blocks are in the next expression. Then expand only these. 
But by using do/next, we have already used the old, unreduced blocks..
So the workarounds is to expand all blocks at once, either before 
reducing that level or after. breaks a bit semantic, means do not 
depend on evaluation-order.
eFishAnt
28-Aug-2005
[1814]
thanks...sorry, got pulled off by my daughter to google when her 
power would be restored...your thoughts here are greatly appreciated, 
as always, Volker.
Maarten
28-Aug-2005
[1815]
I went down this road once. Using do/next terribly slows things down. 
I think that you need parse for this.
Brett
29-Aug-2005
[1816x3]
Just passing. Thought that the function would be interesting, came 
up with this draft.
reduce-deep: func [
	block [block!]
	/local queue result file eval-state sub-result
][

	; Initialise
	queue: make list! 10
	result: reduce []


 ; Loop until we exhaust all unfinished blocks and we exhaust current 
 block.
	until [

		either empty? :block [
			; If finished this block, but more to process - add our
			; result to higher block result and set that block as current.
			if not empty? queue [
				set/any 'sub-result get/any 'result
				set [result block] queue/1
				insert/only tail result get/any 'sub-result
				queue: remove queue
			]
		][

			; Process current block item.

			either block? block/1 [
				; Save current level to process later,
				; set this new block as current.
				queue: head insert/only queue reduce [result next block]
				result: reduce []
				block: block/1
			][
				; Evaluate item.
				eval-state: do/next block
				insert/only tail result eval-state/1
				block: eval-state/2
			]
		]

		all [tail? block tail? queue]
	]

	; Return final result
	result
]
Not robustly tested.
JaimeVargas
30-Aug-2005
[1819]
How can I access a network drive?
Graham
30-Aug-2005
[1820]
I'm sure it's just  %uncname/
JaimeVargas
30-Aug-2005
[1821]
Humm. Not working here.
Graham
30-Aug-2005
[1822]
perhaps it's %/uncname
Volker
30-Aug-2005
[1823]
IIRC /myserver/volker/...
Anton
31-Aug-2005
[1824]
umm.. tried leading double slash ? eg. %//uncname/
Graham
31-Aug-2005
[1825x3]
My primary scsi hard drive in my server killed windows 2003 somehow. 
 It fails the seagate diagnostics though the seatools can't identify 
the drive.  I put in another scsi drive but even though they all 
have different ids, the new windows 2003 server dies when I reattach 
the old drive ( i want to recover files off it ).  It just reboots 
even in safe mode.  Anyone any ideas as to why it should do that?
Unfortunately BartPE doesn't have the driver for the scsi controller 
so I can't use that to examine the drive.
oops .. wrong channel.
JaimeVargas
31-Aug-2005
[1828]
Not of the suggested ways work for me. I am using XP.
Anton
31-Aug-2005
[1829x2]
Maybe you can read a file directly from the share, but it looks like 
you can't access it because you can't CHANGE-DIR to it ?:

http://www.rebol.org/cgi-bin/cgiwrap/rebol/ml-display-thread.r?m=rmlPCHJ
Hey! The rebol.org mail search is pretty good ! Faster than my computer. 
:)
Sunanda
31-Aug-2005
[1831]
Thanks Anton! We had some fun tuning it (it's done with just REBOL 
objects and blocks by the way)--- It should be even faster if implemented 
on your computer as REBOL.org runs (as far as I can tell) on a shared 
1ghz machine with the slowest hard drives outside of a museum.
Geomol
5-Sep-2005
[1832x5]
context question:
If I inside a context block (an object) in one program write:
do %some-program.r

then I can't reach words and functions in the first program from 
the second. I've also tried to bind words to the first context, but 
without luck. Any ideas? Maybe I should put 2 small test-scripts 
here:
prg1.r:

REBOL []
mycontext: context [
do %prg2.r
o: context [
	f: does [print "Hello World!"]
]
f2
]
prg2.r: 

REBOL[]
f2: does [o/f]
I get this error:

>> do %prg1.r
** Script Error: o has no value
** Where: f2
** Near: o/f
If I exclude mycontext from prg1.r binding the words to the global 
context, then it works. But that's not a nice solution.
Ladislav
5-Sep-2005
[1837x3]
this may work:

prg1.r:

REBOL []
mycontext: context [
#include %prg2.r
o: context [
	f: does [print "Hello World!"]
]
f2
]
include %prg1.r
you just have to use my INCLUDE function
Geomol
5-Sep-2005
[1840]
Okay, taking a look...
Ladislav
5-Sep-2005
[1841]
http://www.fm.vslib.cz/~ladislav/rebol/include.r
Geomol
5-Sep-2005
[1842]
Hmm, still doesn't work.
Ladislav
5-Sep-2005
[1843]
checking
Geomol
5-Sep-2005
[1844x2]
REBOL []

do %include.r

mycontext: context [

include %prg2.r

o: context [
	f: does [print "Hej!"]
]

f2
]	; context
That was prg1.r
Ladislav
5-Sep-2005
[1846x2]
wrong
do %include.r can be only in your user.r
Geomol
5-Sep-2005
[1848]
okay
Ladislav
5-Sep-2005
[1849]
and, moreover, copy the example I posted, don't forget #include !
Geomol
5-Sep-2005
[1850x4]
So I do
#include %prg2.r
inside mycontext in prg1.r? And then write
include %prg1.r
to run it?
>> include %prg1.r
** Script Error: o has no value
** Where: f2
** Near: o/f
oops sorry, forgot something. I got it working now.
Thanks!
Ladislav
5-Sep-2005
[1854]
you are welcome, what did you forget, btw? (asking to be able to 
warn other users)
Geomol
5-Sep-2005
[1855]
Mixed include with #include
Ladislav
5-Sep-2005
[1856x3]
yes, that is a gotcha
I should probably write some instructions
do you find INCLUDE useful?
Geomol
5-Sep-2005
[1859]
I wish, something like your include would be part of core. I'm about 
to use such a functionality with my Canvas project, but it's not 
optimal, as it is now.
Ladislav
5-Sep-2005
[1860]
INCLUDE is available for you, it would be even better if you wrote 
a few usage notes